设计模式总结笔记

设计模式笔记(无图)

继承与组合

应尽量把相同的特性提取到超类,把各自的特性抽象成接口。
具体实现可以使用组合。
如果不能确定的话就多用组合,少用继承

观察者模式

1、Observer(观察者)注册成为Obserble(被观察者)的通知对象
2、Obserble有变化就会通知观察者
3、Observer取消注册,Obserble不通知该Observer

装饰者模式

难题:饮料可以加各种各样的小料,最终怎么结算钱?

层层嵌套,最终的本质不变,只是添加了各种新的特性。注意和组合区分,组合是将多特性组合起来。
使用时注意具体场景,使用不同的设计模式。

工厂模式

委托代理生产对象

单例模式

供全局调用的唯一对象。

命令模式

用于封装方法,可以实现复杂操作。
一个命令接口被多个不同实例实现自己的方法。

适配器模式

接口转换。
例如:电源适配器。将电源的220V转换为5V。
三孔转二孔等等。
三个角色:调用方,适配器,被适配者。
调用发无法直接调用被适配者,通过适配器来调用到适配者。

模板方法

模板方法在一个方法中定义一个算法的骨架,而将实际的操作延迟到子类中。

例如:泡茶喝泡咖啡步骤一致,使用一个泡饮料的模板方法,各自实现具体的步骤。
Java中的Compare,利用子类实现的Compare来排序

迭代器和组合模式

迭代器模式提供一个方法顺序的访问一个聚合对象的各个元素,不暴露其内部的表示。
组合模式的含义就是将不同的数据组合起来。只返回一个迭代器。
例子:餐厅合并之后多个菜单合并成一个组合菜单。

状态模式

状态模式允许内部状态改变时,改变它的行为。

代理模式

代理和装饰:装饰可以增加行为,代理用来控制代理对象行为。

复合模式

设计模式组合使用。

其他

桥接,生成器(Builder),责任链,蝇量模式(一份对象通过数量表示多个对象),
解释器,中介者,备忘录(返回之前的状态),原型模式,访问者模式,

设计模式是某情景下针对某个问题的某种解决方案。

你可能感兴趣的:(设计模式总结笔记)