设计模式概述
一、设计模式概念与意义
设计模式是一套代码设计经验的总结,为的是代码重用,提高代码可读性。每种模式在现实中都能找到相对应的原理,符合面向对象的原则,把现实中的事物抽象成虚拟世界的对象。
同时,在开发大型软件时,很多时候需要一个框架,将软件分成一个个功能模块,以便多人的分工合作,因此框架设计中经常要使用设计模式。所以,学习设计模式有助于对框架结构的理解,以对整个代码结构有清晰的认识,缩短软件开发周期。
二、设计原则
1.单一职责原则(Single Responsibility Principle)
一个类应该只有一个引起它变化的原因。
2.开闭原则(Open Close Principle)
对扩展开放,对修改关闭。把抽象接口与实现相分离。
3.里氏转换原则(Liskov Substitution Principle)
任何基类可以出现的地方,子类一定可以出现。对OCP的补充,OCP的关键是抽象化,而基类与子类的继承关系就是抽象化的具体实现。
4.依赖倒转原则(Dependence Inversion Principle)
OCP的基础,针对接口编程,依赖于抽象而不依赖于具体。
5.接口隔离原则(Interface Segregation Principle)
使用多个专门的接口比使用单一的总接口要好。
6.迪米特法则(Demeter Principle)
一个对象应当对其它对象尽可能少地发生相互作用,使系统功能相对独立。
7.合成/聚合复用原则(Composite/Aggregate Reuse Principle)
尽量使用合成/聚合,而不是使用继承。
三、设计模式的类型
三类设计模式:
创建型模式:提供在创建对象时隐藏逻辑的方法,不使用new 运算符直接实例化对象。
1.工厂模式(Factory Pattern)
2.抽象工厂模式(Abstract Factory Pattern)
3.单例模式(Singleton Pattern)
4.建造者模式(Builder Pattern)
5.原型模式(Prototype Pattern)
结构型模式:关注类和对象的组合。继承概念用来组合接口和定义组合对象获得新功能。
1.适配器模式(Adapter Pattern)
2.桥接模式(Bridge Pattern)
3.过滤器模式(Filter Criteria Pattern)
4.组合模式(Composite Pattern)
5.装饰器模式(Decorator Pattern)
6.外观模式(Facade Pattern)
7.享元模式(Flyweight Pattern)
8.代理模式(Proxy Pattern)
行为型模式:关注对象之间的通信
1.责任链模式(Chain of Responsibility Pattern)
2.命令模式(Command Pattern)
3.解释器模式(Interpreter Pattern)
4.迭代器模式(Iterator Pattern)
5.中介者模式(Mediator Pattern)
6.备忘录模式(Memento Pattern)
7.观察者模式(Observer Pattern)
8.状态模式(State Pattern)
9.空对象模式(Null Object Pattern)
10.策略模式(Strategy Pattern)
11.模版模式(Template Pattern)
12.访问者模式(Visitor Pattern)