2020-04-05 Data from O’reilly

装饰对象

设计原则:类应该对拓展开放,对修改关闭。
超类:super/或者被成为父类

星巴克点单案例

比起对每一杯特制的星巴克咖啡写上各种各样的子类,我们有更好的选择,装饰模式。
我们可以用调料来装饰饮料,比如一个深焙咖啡是一个对象,我们用摩卡对象来装饰它,用奶泡对象来装饰它,调用cost方法,并依赖委托将调料的价格加上去。
屏幕快照 2020-04-05 11.20.35.png

最后,我们的框架就变成了下图⬇️
屏幕快照 2020-04-05 11.23.25.png

工厂模式

我们为什么要采用工厂模式?比如我们现在经营一家披萨点,我们要生产一个芝士披萨,就要new一次,也就是我们要到用到时候才会new一个对象,而且当我们需要新增对象的时候,也要深入到代码层面去修改,这违背了我们将变与不变的东西抽离出来的原则,所以我们要把创建对象的代码给封装起来!
屏幕快照 2020-04-05 11.38.01.png
其实工厂模式最大的威力还不是抽离和封装,而是我们会有一个抽象的工厂🏭,在这个工厂里负责原料的获得,处理订单,发送订单,制作pizza等,但是这个工厂不会关注细节,比如披萨用什么面团,什么名字,但是我们可以new一个抽象工厂的子类,它继承了超类的功能,也同时拥有自己的个性,比如这是位于新加坡的pizza店,就和西西里岛的pizza点的口味不同,这是根据实际情况去调整的,这和子类有关。然后位于新加坡的这家pizza店才会根据客户的点单判断该生产哪种类型的pizza,然后提交给客户。

单件模式-独一无二的对象

确保一个类只有一个实例,并提供一个全局访问点。


感谢您的阅读
翻译和整理 by 嘉艺
2020.04.05
如有任何疑问或机会请发送邮件至email:
lucida997@outlook.com