锁定老帖子 主题:如何减少子类对超类的依赖——一个设计问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-05
如果lz的意思就是要在子类增强一下父类方法,可以用楼上的AOP方法. 如果是想每个子类都用单独的逻辑,那还是不要用继承算了
|
|
返回顶楼 | |
发表时间:2008-04-05
我觉得还是尽量少用继承,多用组合或者聚合,毕竟继承的耦合度太高了。。
|
|
返回顶楼 | |
发表时间:2008-04-07
设计模式是很容易滥用的。继承也是。
楼主的问题的由来,就是滥用了继承。 |
|
返回顶楼 | |
发表时间:2008-04-07
这是非常经典的工厂方法模式.
为何会被这么多人唾弃, 很明显是LZ应用环境描述不清. 工厂方法模式也是利用了继承,并且还实现了灵活性. 可见,继承并不是不好,关键是看你如何用. 任何东西的存在都有其道理. 问题是:你懂得利用吗? 支持楼主,你的原意是无可厚非的,很好。 只是要描述清楚了.:) |
|
返回顶楼 | |
发表时间:2008-04-10
就模式说模式, 一点意义没有
|
|
返回顶楼 | |
发表时间:2008-04-11
这帖子气氛真不怎么好
楼主提到了好莱坞原则,猜测是想应用Template Method模式吧。不过好像没有体会好莱坞原则的重点,好莱坞原则的关键是好莱坞对项目的完全控制,演艺人员只能服从好莱坞领导的安排,在需要的的时候完成自己的表演。 在这个例子里Class A的go()方法定义好顶层的逻辑,换句话说go()是模板方法,最好应该定义成final防止子类重写。Class A的prepare()和clearup() 方法属于顶层逻辑里的具体实现,最好也定义成final防止子类给他置换掉。Class A的going()抽象方法是要求子类实现的。设计好Class A后,生成A的子类时只需要考虑要去置换掉哪些操作,这样会使各个层次类的责任变的很清晰。Template Method模式在设计框架的时候会经常用到。 如果楼主事先说明Template Method模式也许效果会好些 懂点设计的人都知道继承不能乱用,但是并不代表不用 以上无论对错希望大家以一个有好的气氛来探讨 |
|
返回顶楼 | |