3

设计模式

设计模式(Design pattern)代表最佳实践。
每个设计模式都是对应某个问题的解决方案总结的经验。

GOF(四人帮,Gang of Four)

1994年,四位作者(合称GOF)合著了Design pattern。涉及到软件开发中设计模式的概念。
GOF提出设计模式主要基于以下的面向对象设计原则。

设计模式类型

GOF总结了 共计 23 种设计模式,并将其划分为三大类:

  1. 创建型模式(Creational Patterns)
  2. 结构型模式(Structural Patterns)
  3. 行为型模式(Behavioral Patterns)

除此之外,还有一类设计模式:J2EE设计模式

序号 模式&描述 包括
1 创建型模式
通过隐藏类的构造器方法,防止new直接实例化对象。
使得程序在判断针对某个给定实例需要创建哪些对象时更灵活
- 工厂模式(Factory Pattern)
- 抽象工厂模式(Abstract Factofy Pattern)
- 单例模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
2 结构型模式
关注类和对象的组合,避免继承
通过组合接口和定义组合对象获得新功能
- 适配器模式(Adapter Pattern)
- 桥接模式(Brifge Pattern)
- 过滤器模式(Filter、Criteria Pattern)
- 组合模式(Composite Pattern)
- 装饰器模式(Decorator Pattern)
- 外观模式(Facade Pattern)
- 享元模式(Flyweight Pattern)
- 代理模式(Proxy Pattern)
2 行为型模式
关注对象之间的通信
- 责任链模式(Chain of Responsibility Pattern)
- 命令模式(Command Pattern)
- 解释器模式(Interperter Pattern)
- 迭代器模式(iterator Pattern)
- 中介者模式(Mediator Pattern)
- 备忘录模式(Memento Pattern)
- 观察者模式(Observer Pattern)
- 状态模式(State Pattern)
- 空对象模式(Null Object Pattern)
- 策略模式(Strategy Pattern)
- 模板模式(Template Pattern)
- 访问者模式(Visitor Pattern)
4 J2EE设计模式
关注表示层,由Sun Java Center鉴定。
- MVC模式(MVC Pattern)
- 业务代表模式(Business Delegate Pattern)
- 组合实体模式(Composite Entity Pattern)
- 数据访问对象模式(Data Access Object Pattern)
- 前端控制器模式(Front Controller Pattern)
- 拦截过滤器模式(Intercepting Filter Pattern)
- 服务定位器模式(Service Locator Pattern)
- 传输对象模式(Transfer Object Pattern)

设计模式 关系图

clipboard.png

设计模式的六大原则

1 开闭原则(Open Close Principle)
开放扩展,关闭修改。提高程序扩展性,易于维护和升级。使用接口和抽象类

2 里氏代换原则(Liskov Substitution Principle)
任何基类可以出现的地方,子类一定可以出现。里式代换原则 是对开闭原则的补充。实现开闭原则的关键步骤是抽象化,而基类与子类的继承关系是抽象化的具体实现。所以里式代换原则是对实现抽象化的具体步骤的规范。

3 依赖倒转原则(Dependence Inversion Principle)
是开闭原则的基础。针对接口编程,依赖于抽象而不依赖于具体。

4 接口隔离原则(Interface Segregation Principle)
使用多个隔离的接口,比使用单个接口更好。指降低类之间的耦合度。
由此说明,设计模式从大型软件架构出发、便于升级和维护的软件设计思想,强调降低依赖、降低耦合。

5 迪米特法则、又称最少知道原则(Demeter Principle)
最少知道原则:一个实体尽量少地与其他实体之间发生相互作用,是的系统功能模块相对独立。

6 合成复用原则(Composite Reuse Principle)
尽量使用合成/组合的方式、而不是使用继承。

参考至 [菜鸟教程|设计模式]


roylion
204 声望25 粉丝

读书破万卷