考虑这样一个简单类层次应该如何设计?

03-09-09 sim114

动物
肉食 草食
杂食动物???
鸡鸭鹅 猪牛羊

interface 动物{
boolean can吃草();
boolean can吃肉();
}

class 肉食动物{
...
}
class 草食动物{
...
}

class 杂食动物{
...
}
classextends 草食动物{
...
}

classextends 杂食动物{
...
}




interface 肉食动物{
boolean can吃肉();
}

interface 草食动物{
boolean can吃草();
}

interface 杂食动物 extends 肉食动物,草食动物{
}

class 猪 implements 杂食动物{
...
}
class 鸡 implements 草食动物{
...
}

<p>
    

sim114
2003-09-09 17:36

上边的别看了[/font]

动物
肉食 草食
杂食动物???
鸡鸭鹅 猪牛羊

第1种...
interface 动物{
boolean can吃草();
boolean can吃肉();
...
}

abstract class 肉食动物 implements 动物{
boolean can吃草(){
  return false;
}
boolean can吃肉(){
  return true;
}
...
}
abstract class 草食动物 implements 动物{
...
}

abstract class 杂食动物 implements 动物{
...
}
classextends 草食动物{
...
}

classextends 杂食动物{
...
}



第2种...

interface 动物{
...
}
interface 肉食性{
boolean can吃肉();
}
interface 草食性{
boolean can吃草();
}

interface 杂食动物 extends 肉食动物,草食动物{
}

class 猪 implements 杂食动物{
...
}
class 鸡 implements 草食动物{
...
}

<p>

bfh365
2003-09-10 09:01
用工厂模式试试看。不过代码量可能不小,但是以后的扩展可以比较方便。

bfh365
2003-09-10 09:05
我想了想,如果层次比较多时,使用工厂比较复杂。很容易把人搞糊涂。意议在使用模式时不能生搬硬套。应该以简单为妙。

bfh365
2003-09-10 09:47
刚才的图有误现改正

附代码如下:

bfh365J0RA275xjI.rar

另外代码可能有不完备之处,请指点。

猜你喜欢
2Go 1 2 下一页