首页 新闻 赞助 找找看

类的设计问题。

0
悬赏园豆:50 [已解决问题] 解决于 2013-10-03 10:35

比如三个类(A,B,C),C类在实例化时,可能包含A类全部属性,也可能包含B类全部属性,但不可能都包含两类。

在构建这三个类时,我想C类中包含类型为A的一个属性,和类型为B的一个属性,这样我可以根据这两字段的非空属性来判断C类的实际功能,感觉这种方法是最笨的。

园友有没有更好的设计方案。

Rommend2022的主页 Rommend2022 | 初学一级 | 园豆:38
提问于:2013-09-23 09:02
< >
分享
最佳答案
0

A/B继承自同一个祖先类X C类别里有一个X类型的属性

实例化的时候传入A或者B的具体类别去初始化这个X类型的属性

 

判断的时候可以根据X的类类型来得到具体是A还是B

收获园豆:10
黑暗煎饼果子 | 菜鸟二级 |园豆:354 | 2013-09-23 09:08
其他回答(6)
0

没看出C有什么用

收获园豆:10
angrysky | 园豆:151 (初学一级) | 2013-09-23 09:11

 包含关系。如果C类包含A类,C类中包含A类中所有的属性,并且C类也有它自己的属性。

支持(0) 反对(0) Rommend2022 | 园豆:38 (初学一级) | 2013-09-23 09:42
0

这题目来看,c应该是A,B的父类。c持有引用,用不同的子例A或B实例化。

收获园豆:10
angelshelter | 园豆:9887 (大侠五级) | 2013-09-23 09:18
0

可以用工厂方法设计模式。A、B 继承同一个接口,在 C 中实例化接口动态创建 A 或者 B 的实例。具体你可以先了解一下工厂方法设计模式。

收获园豆:10
guwoow | 园豆:611 (小虾三级) | 2013-09-23 09:19
0

1楼和4楼的方法可行

收获园豆:10
会长 | 园豆:12401 (专家六级) | 2013-09-23 10:02
0

用多态不就可以解决

水晶途途 | 园豆:1443 (小虾三级) | 2013-09-25 11:09
0

C应该是A和B类的父类或者继承的接口,具体实例化的时候肯定是知道具体实例化A还是B,只不过返回的是C。这个时候可以用关键字 is 来判断,或者用关键字 as 来进行转换,通过判断转换后的值是否为空也可达到判断类型的目的。

凯尔特 | 园豆:216 (菜鸟二级) | 2013-10-02 15:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册