装饰者模式(Decorator),以 Starbuzz Coffe 的多风味咖啡为例。
- 饮料抽象类 A ;
- 调料抽象类 B 继承到 A ;
- 饮料类 C 继承 A ;
- 调料类 D 继承 B,并引入 A 对象;
- 用调料 D 装饰 B,嵌套直到需求完全;
- D 可以在 C 的行为前/后加上自己的代码(行为),也可完全代替 C 的行为;
以星巴兹咖啡为例的装饰者模式定义: 动态地将责任附加到对象上。诺要扩展功能,装饰者提供了比继承更有弹性的替代方案。
OO原则:OO原则(开放 – 关闭): 对扩展开放,对修改关闭。
PS: 我不想记太多的东西,设计模式不是理解就可以的,而是实际应用中的磨砺出来的。即使用PHP重写了代码后只有3层收获,设计模式的目标就是通过子类(传入相对接口对象)调用抽象超类和接口的方法来扩展行为,而不必大量修改原有代码。刚刚接触难以理解,可马上会爱不释手。
最新评论