作者march20 ()
看板Programming
标题Re: 继承和多重继承
时间Wed Jul 22 08:20:43 2009
※ 引述《sorryChen (陈扬和)》之铭言:
: Sorry..各位高手 之前没有看到大家热情的回应
: 我之前用继承是为把code的function 依照功能分层 所以每层都有实做的function
: 之前没有想好要重复使用的目的 但现在要写一个类似的class..
: 而且会用到共同定义的functions 其实我觉得这种情形应该还满普遍
不一定要继承才可以共用啊.
比如说, 你的 class 应该没一个从任何地方继承 strcpy 这个 function,
还是可以 "共用" strcpy 这个 function 的.
继承可以帮你达成共用的目的, 但共用不是非继承不可.
: 但我不知道软工上正确的作法是什麽 把交通工具拿掉也很奇怪阿..
: 所以正确的作法是应该写个独立的class叫交通工具
: 然後车和船 有"交通工具"的这个物件 对吧
: 这是是合成还是聚合阿 ? 我很逊阿!!! 不懂strategy pattern..正在研究当中
: 但水陆两用车直接继承交通工具 这样之前写在车和船的功能就不能重复使用了
: 有多份copy的code不会不好维护吗
你可以把 "多份 copy" 的情形稍为说明一下 (如何产生多份 copy),
我们再来讨论好不好维护.
通常来说是这样的 (假设现在写 java)
class Batmobile implements Vehicle{
private Car c;
private Boat b;
};
假设今天 Vehicle 有个 move() method, 那 Batmobile 的 move() 可能是这样写的
public void move(){
if(isOnLand())
c.move();
else b.move();
}
这样是不是 Car 跟 Boat 的 function 都可以使用, 而且也没有多个 copy 的问题呢?
你 SorryMobile 的实际用途应该远比这复杂, 建议你把你的需求列出来吧 XD
: ※ 引述《tinlans ( )》之铭言:
: : 他讲的水陆两用车,
: : 让我觉得分类法应该是以功能做分类,
: : 继承树应该建立在「移动方式」的行为上,
: : 各种交通工具只是以合成或聚合的方式去使用这些行为物件,
: : 这样水陆两用车就可以直接继承交通工具 (如果真的有必要留交通工具的话)。
: : 第二行到第四行简单来说就是 strategy pattern。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 128.54.40.203
※ 编辑: march20 来自: 66.75.255.220 (07/22 11:14)
1F:推 sorryChen:谢谢march 学长 128.125.87.33 07/23 14:40