比如三个类(A,B,C),C类在实例化时,可能包含A类全部属性,也可能包含B类全部属性,但不可能都包含两类。
在构建这三个类时,我想C类中包含类型为A的一个属性,和类型为B的一个属性,这样我可以根据这两字段的非空属性来判断C类的实际功能,感觉这种方法是最笨的。
园友有没有更好的设计方案。
A/B继承自同一个祖先类X C类别里有一个X类型的属性
实例化的时候传入A或者B的具体类别去初始化这个X类型的属性
判断的时候可以根据X的类类型来得到具体是A还是B
没看出C有什么用
包含关系。如果C类包含A类,C类中包含A类中所有的属性,并且C类也有它自己的属性。
这题目来看,c应该是A,B的父类。c持有引用,用不同的子例A或B实例化。
可以用工厂方法设计模式。A、B 继承同一个接口,在 C 中实例化接口动态创建 A 或者 B 的实例。具体你可以先了解一下工厂方法设计模式。
1楼和4楼的方法可行
用多态不就可以解决
C应该是A和B类的父类或者继承的接口,具体实例化的时候肯定是知道具体实例化A还是B,只不过返回的是C。这个时候可以用关键字 is 来判断,或者用关键字 as 来进行转换,通过判断转换后的值是否为空也可达到判断类型的目的。