这是一本好书
上班第17天,今天发工资,哇咔咔
============================================
策略模式:
概念:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
通俗来讲,就是有一个父类型,他有一些方法,子类型可以继承这些方法,但是这些方法在子类中的表现又不尽相同。
所以将父类型中的一些方法,也变成接口和类来处理,这样可以在构造子类的时候,选择对应的父类不同的方法来构造。
观察者模式:
概念:定义了对象之间的一对多依赖,这样依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
例子是天气预报,接收到新数据后对三个指示器进行更新。指示器继承自object并都有update方法。主题对象将不同的object加入到array,在获取数据后对全部object进行自动更新。
装饰者模式:
概念:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
比如星巴兹咖啡的解决方案:先定义一个基类,有描述和花费两个方法,一般的咖啡直接继承该父类即可。如果需要加调料,使用继承自基类的装饰者类,用原始的对象构造新的对象,并添加额外的花费即可。
工厂方法模式:
概念:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
在制作pizza的时候,使用pizza工厂类,来根据不同的type选择实例化不同的pizza style。这样可以保证在对之后的处理独立。
也就是把一串的if else移到专门的工厂类里面去,保证代码的稳定性。
包括:一般工厂模式,抽象工厂模式(可以有很多不同的工厂实现自同一个抽象工厂,比如pizza的原料也可以不同)
单件模式:
概念:确保一个类只有一个实例,并提供一个全局访问点
Singleton模式的实现基于两个要点:
1)不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance。Public保证了它的全局可见性,静态方法保证了不会创建出多余的实例。
2)将类的构造函数设为Private,即将构造函数”隐藏”起来,任何企图使用构造函数创建实例的方法都将报错。这样就阻止了开发人员绕过上面的Instance方法直接创建类的实例。
通过以上两点就可以完全控制类的创建:无论有多少地方需要用到这个类,它们访问的都是类的唯一生成的那个实例。
命令模式:
概念:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
定义一个命令接口,具有execute方法,其他命令已此为基础。使用命令的对象包含一个command,通过set方法指定不同的命令并调用execute方法即可实现命令操作。