参考
设计模式分类
创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interperter模式)、状态模式、策略模式、职责链模式(责任链模式)。
23种设计模式
代理模式
关键代码:真实对象:实际执行任务的对象。代理类:实现与真实对象相同的接口,并添加额外的控制逻辑。比如持有好几个真实对象,通过逻辑判断使用哪个对象合适。
优点:职责分离:将访问控制与业务逻辑分离。扩展性:可以灵活地添加额外的功能或控制。
缺点:性能开销:增加了代理层可能会影响请求的处理速度。实现复杂性:某些类型的代理模式实现起来可能较为复杂。
注意事项:与装饰器模式的区别:装饰器模式用于增强功能,代理模式用于控制访问。- 装饰器模式:是对现有的一个真实对象功能的加强
- 代理模式:决定你能不能访问真实对象,访问那个真实对象。
外观模式
意图:为一个复杂的子系统提供一个一致的高层接口。这样,客户端代码就可以通过这个简化的接口与子系统交互,而不需要了解子系统内部的复杂性。使用场景:- 不需要了解系统内部的复杂逻辑和组件交互时。
- 整个系统定义一个清晰的入口点时。
关键代码:外观类:将复杂的子系统操作封装成简单的方法,提供接口给客户端调用。子系统类:实现子系统功能,被外观类调用
享元模式
就是对象池和线程池了。
迭代器模式
用迭代器访问数组,不用暴露数组的实现细节。
意图:允许顺序访问一个聚合对象中的元素,同时不暴露对象的内部表示。