设计模式是解决开发问题的一般方法,由四人帮 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 总结
非常失望。倘若你是新手,或许设计模式还能给你一丝启发;如果你是老鸟,就会明显感觉到《设计模式》盛名之下其实难副。以上设计模式所包含的设计思想,即使没有人提炼出来,也能自然积累获得。