A和B
如果是is-a 的关系,那么使用继承。
如果 是has-a,就应该是两个独立的类,
将所有类型的B封装成一个类, 通过setter设为A的一个属性,就是Strategy了, 这样可以在运行时视情况改变a的行为了。
如果想在原有类的一个实例中动态增加属性或者做处理, 使用Decorator层层修饰,就象Inputstream一样。
如果是is-a 的关系,那么使用继承。
如果 是has-a,就应该是两个独立的类,
将所有类型的B封装成一个类, 通过setter设为A的一个属性,就是Strategy了, 这样可以在运行时视情况改变a的行为了。
如果想在原有类的一个实例中动态增加属性或者做处理, 使用Decorator层层修饰,就象Inputstream一样。
本文探讨了面向对象设计中的核心概念,包括继承、组合与装饰者模式。解释了何时使用继承来表达is-a关系,何时使用组合(has-a)来增强类的设计灵活性。同时介绍了如何利用装饰者模式动态地为对象添加职责。
1万+

被折叠的 条评论
为什么被折叠?



