23种设计模式

参考

设计模式分类

  • 创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。
  • 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
  • 行为型模式:模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interperter模式)、状态模式、策略模式、职责链模式(责任链模式)。

23种设计模式

代理模式

  • 关键代码:

    • 真实对象:实际执行任务的对象。
    • 代理类:实现与真实对象相同的接口,并添加额外的控制逻辑。比如持有好几个真实对象,通过逻辑判断使用哪个对象合适。
  • 优点:

    1. 职责分离:将访问控制与业务逻辑分离。
    2. 扩展性:可以灵活地添加额外的功能或控制。
  • 缺点:

    1. 性能开销:增加了代理层可能会影响请求的处理速度。
    2. 实现复杂性:某些类型的代理模式实现起来可能较为复杂。
  • 注意事项:

    • 与装饰器模式的区别:装饰器模式用于增强功能,代理模式用于控制访问。
      • 装饰器模式:是对现有的一个真实对象功能的加强
      • 代理模式:决定你能不能访问真实对象,访问那个真实对象。

外观模式

  • 意图:为一个复杂的子系统提供一个一致的高层接口。这样,客户端代码就可以通过这个简化的接口与子系统交互,而不需要了解子系统内部的复杂性。
  • 使用场景
    • 不需要了解系统内部的复杂逻辑和组件交互时。
    • 整个系统定义一个清晰的入口点时。
  • 关键代码:
    • 外观类:将复杂的子系统操作封装成简单的方法,提供接口给客户端调用。
    • 子系统类:实现子系统功能,被外观类调用

享元模式

就是对象池和线程池了。

迭代器模式

用迭代器访问数组,不用暴露数组的实现细节。

  • 意图:允许顺序访问一个聚合对象中的元素,同时不暴露对象的内部表示。