设计模式
设计模式(Design pattern)代表最佳实践。
每个设计模式都是对应某个问题的解决方案总结的经验。
GOF(四人帮,Gang of Four)
1994年,四位作者(合称GOF)合著了Design pattern。涉及到软件开发中设计模式的概念。
GOF提出设计模式主要基于以下的面向对象设计原则。
设计模式类型
GOF总结了 共计 23 种设计模式,并将其划分为三大类:
- 创建型模式(Creational Patterns)
- 结构型模式(Structural Patterns)
- 行为型模式(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) |
设计模式 关系图
设计模式的六大原则
1 开闭原则(Open Close Principle)
开放扩展,关闭修改。提高程序扩展性,易于维护和升级。使用接口和抽象类
2 里氏代换原则(Liskov Substitution Principle)
任何基类可以出现的地方,子类一定可以出现。里式代换原则 是对开闭原则的补充。实现开闭原则的关键步骤是抽象化,而基类与子类的继承关系是抽象化的具体实现。所以里式代换原则是对实现抽象化的具体步骤的规范。
3 依赖倒转原则(Dependence Inversion Principle)
是开闭原则的基础。针对接口编程,依赖于抽象而不依赖于具体。
4 接口隔离原则(Interface Segregation Principle)
使用多个隔离的接口,比使用单个接口更好。指降低类之间的耦合度。
由此说明,设计模式从大型软件架构出发、便于升级和维护的软件设计思想,强调降低依赖、降低耦合。
5 迪米特法则、又称最少知道原则(Demeter Principle)
最少知道原则:一个实体尽量少地与其他实体之间发生相互作用,是的系统功能模块相对独立。
6 合成复用原则(Composite Reuse Principle)
尽量使用合成/组合的方式、而不是使用继承。
参考至 [菜鸟教程|设计模式]
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。