考虑这样一个简单类层次应该如何设计?
|
|
上边的别看了[/font]
|
用工厂模式试试看。不过代码量可能不小,但是以后的扩展可以比较方便。
我想了想,如果层次比较多时,使用工厂比较复杂。很容易把人搞糊涂。意议在使用模式时不能生搬硬套。应该以简单为妙。
刚才的图有误现改正
附代码如下:
bfh365J0RA275xjI.rar
另外代码可能有不完备之处,请指点。
如果吧肉食,素食和杂食和鸭,猪和老虎这个系列分开是不是要好一点,用Bridge来组合,就象大家常说的可乐和冰的那个例子,我手头没工具只好胡说的。
你好像没有提出一个明确设计目标,哪些变化最少,哪些可能会动态拓展?在没有设计目标的情况下,所有的设计方案都是可以采用的。
我觉得用桥梁模式比较好,抽象部分是动物,实现部分是动物的食性。
动物可分为鸡鸭鹅猪牛羊狼,食性分为肉食性、草食性和杂食性。
这样,让动物拥有食性会比较好,也减少了类层次。
(我的together给删了,没画类图,抱歉!)
肉食/草食/杂食的分别对你有多重要?
1 如果真的不可避免地会导致接口差异,使用你的第二种类层次是很自然的;
2 否则的话,我宁愿只用一个成员变量(对象)来表示该属性,让类层次精简一些;必要时为该成员对象另起一个独立的类层次;无所谓这是什么模式,这是“聚合”优先于“继承”的精神的一个典型样例。
class 食性 {}
class 动物
{
private 食性 shixing;
}