设计原则:类应该对扩展开放,对修改关闭。在不修改现有代码的情况下,拓展,搭配新的行为。设计更加弹性应对改变,可以接受新的功能应对改变的需求。
遵循开放关闭原则会引入代码抽象层次,增加代码的复杂度。我们的注意力是在于设计中最有可能发生改变的地方,然后应用开放关闭原则。
允许类拓展,不修改现有的代码拓展新行为。
装饰者模式:
动态的将责任附加到对象上。若要扩展功能,装饰者提供比继承更有弹性的方法。
该模式中,继承是为了获取正确的类型而不是为了去继承行为。行为来自装饰者和基础组件,或装饰者之间的组合关系。相关对象的组合更加弹性和灵活。
如果依赖继承,那么类的行为只能在静态时决定,换句话说,继承中类的行为要么来自基类,要么来自超类。利用组合,可以把装饰者混合着用。
我们可以在任何时候,实现新的装饰者增加行为。而继承的方式只能去修改代码。
装饰者和被装饰者拥有相同的超类型。
装饰者可以在被装饰者行为之前或之后加上自己的行为,以达到特定的目的。
封装变化。多用组合少用继承。针对接口编程而不是针对实现编程。为交互对象之间的松耦合努力。对扩展开放,对修改关闭。