设计模式

设计模式是解决开发问题的一般方法,由四人帮 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 首次提出,如今已是江湖切口。

1 创建型模式 (Creational Patterns)

  • 工厂模式 (Factory Pattern)
    • 如果你需要一辆汽车,那就直接去工厂提货,不用去管这辆汽车是怎么做出来的。
  • 抽象工厂模式 (Abstract Factory Pattern)
    • 更准确地说是连锁店模式,比如苏果超市,每家连锁店都能提供全套生活必需品,但又略有不同。
  • 单例模式 (Singleton Pattern)
    • 一个党只能有一个党魁。
  • 建造者模式 (Builder Pattern)
    • 在肯德基,汉堡、薯条、可乐、炸鸡是不变的,而其组合套餐经常变化。
  • 原型模式 (Prototype Pattern)
    • 细胞分裂。不是新建,是复制。

2 结构型模式 (Structural Patterns)

  • 适配器模式 (Adapter Pattern)
    • 美国电器电压 110V,中国电压 220V,就要有一个适配器将 110V 转换为 220V 才能让电器正常工作。
  • 桥接模式 (Bridge Pattern)
    • 不好理解。
  • 过滤器模式或标准模式 (Filter、Criteria Pattern)
    • 属性筛选?
  • 组合模式 (Composite Pattern)
    • 就是树形结构。
  • 装饰器模式 (Decorator Pattern)
    • 类似继承。
  • 外观模式 (Facade Pattern)
    • 类似数据库里的视图。
  • 享元模式 (Flyweight Pattern)
    • 类似共享单车。
  • 代理模式 (Proxy Pattern)
    • 接口保护。
    • 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
    • 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。

3 行为型模式 (Behavioral Patterns)

  • 责任链模式 (Chain of Responsibility Pattern)
    • 击鼓传花。
  • 命令模式 (Command Pattern)
    • 将多部操作组织成命令语句。
  • 解释器模式 (Interpreter Pattern)
    • 解释参数。
  • 迭代器模式 (Iterator Pattern)
    • 内部迭代。
  • 中介者模式 (Mediator Pattern)
    • 简易工具。
  • 备忘录模式 (Memento Pattern)
    • 游戏存档。
  • 观察者模式 (Observer Pattern)
    • 拍卖师将最高标价通知给其他竞价者继续竞价。
  • 状态模式 (State Pattern)
    • 切换机制。
  • 空对象模式 (Null Object Pattern)
    • 空对象取代 NULL 对象。
  • 策略模式 (Strategy Pattern)
    • 动态执行。
  • 模板模式 (Template Pattern)
    • 多态。
  • 访问者模式 (Visitor Pattern)
    • 保护私有信息。

4 J2EE 模式 (J2EE Patterns)

  • MVC 模式 (MVC Pattern)
    • MVC 模式代表 Model-View-Controller 模型-视图-控制器模式。
  • 业务代表模式 (Business Delegate Pattern)
    • 前后端分离。
  • 组合实体模式 (Composite Entity Pattern)
    • 不好理解。
  • 数据访问对象模式 (Data Access Object Pattern)
    • 再加一些业务代表。
  • 前端控制器模式 (Front Controller Pattern)
    • 类似消息循环。
  • 拦截过滤器模式 (Intercepting Filter Pattern)
    • 分析命令。
  • 服务定位器模式 (Service Locator Pattern)
    • 利用服务器缓存。
  • 传输对象模式 (Transfer Object Pattern)
    • 信息结构体。

5 设计模式之间的关系

设计模式之间的关系

6 总结

非常失望。倘若你是新手,或许设计模式还能给你一丝启发;如果你是老鸟,就会明显感觉到《设计模式》盛名之下其实难副。以上设计模式所包含的设计思想,即使没有人提炼出来,也能自然积累获得。