设计模式总结

本文转载自git

http://www.mynawang.com/

相关代码可访问github

https://github.com/mynawang/Design-Pattern-Learning

 

什么是设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
 

设计模式的6个原则

一、迪米特法原则(Demeter Principle)
迪米特法原则又称为最少知道原则,也就是说,一个实体应当尽可能少的与其余实体之间发生相互做用,使得系统功能模块相对独立。也就是咱们日常所说的”高内聚,低耦合”。
二、单一职责原则(Single Responsibility Principle)
就一个类而言,应该仅有一个引发它变化的缘由。简而言之,就是功能要单一,一个类只负责一项职责。
三、接口隔离原则(Interface Segregation Principle)
使用多个专门的接口,而不使用单一的总接口,即客户端不该该依赖那些它不须要的接口。
四、里氏替换原则(Liskov Substitution Principle)
全部引用基类(父类)的地方必须能透明地使用其子类的对象。即继承于派生的规则。
五、依赖倒置原则(Dependence Inversion Principle)
高层模块不该该依赖低层模块,两者都应该依赖其抽象;抽象不该该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
六、开闭原则(Open-Closed Principle)
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应尽可能在不修改原有代码的状况下进行扩展。
 

设计模式分类

建立型模式
一、抽象工厂模式(Abstract Factory Pattern)
提供一个接口, 用于建立相关或依赖对象的家族, 而不须要指定具体类。
二、工厂方法模式(Factory Method Pattern)
定义了一个建立对象的接口,但由子类决定要实例化的类是哪个。工厂方法让类把实例化推迟到子类。
三、建造者模式(Builder Pattern)
将一个复杂对象的构建与它的表示分离,使得一样的构建过程能够建立不一样的表示。
四、单例模式(Singleton Pattern)
确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。
五、原型模式(Prototype Pattern)
用原型实例指定建立对象的种类,并经过拷贝这些原型建立新的对象。
结构型模式
一、适配器模式(Adapter Pattern)
是做为两个不兼容的接口之间的桥梁。它结合了两个独立接口的功能。
二、装饰器模式(Decorator Pattern)
容许向一个现有的对象添加新的功能,同时又不改变其结构。它是做为现有的类的一个包装。
三、代理模式(Proxy Pattern)
一个类表明另外一个类的功能。建立具备现有对象的对象,以便向外界提供功能接口。
四、桥接模式(Bridge Pattern)
用于把抽象化与实现化解耦,使得两者能够独立变化。经过提供抽象化和实现化之间的桥接结构,来实现两者的解耦。
五、外观模式(Facade Pattern)
隐藏系统的复杂性,并向客户端提供了一个客户端能够访问系统的接口。向现有的系统添加一个接口,来隐藏系统的复杂性。
六、享元模式(Flyweight Pattern)
主要用于减小建立对象的数量,以减小内存占用和提升性能。经过共享技术实现相同或类似对象的重用。
七、组合模式(Composite Pattern)
又叫部分-总体模式,是用于把一组类似的对象看成一个单一的对象。将对象组织到树结构中,能够用来描述总体与部分的关系。
行为型模式
一、模板方法模式(Template Method Pattern)
一个抽象类公开定义了执行它的方法的方式/模板。它的子类能够按须要重写方法实现,但调用将以抽象类中定义的方式进行。
二、备忘录模式(Memento Pattern)
保存一个对象的某个状态,以便在适当的时候恢复对象。
三、迭代子模式(Iterator Pattern)
用于顺序访问集合对象的元素,不须要知道集合对象的底层表示。
四、访问者模式(Visitor Pattern)
表示一个做用于某对象结构中的各元素的操做,它使咱们能够在不改变各元素的类的前提下定义做用于这些元素的新操做。
五、观察者模式(Observer Pattern)
定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆获得通知并被自动更新。
六、解释器模式(Interpreter Pattern)
定义语言的文法,而且创建一个解释器来解释该语言中的句子,这里的“语言”意思是使用规定格式和语法的代码。
七、中介者模式(Mediator Pattern)
用一个中介对象来封装一系列的对象交互,中介者使各对象不须要显式地相互引用,从而使其耦合松散,并且能够独立地改变它们之间的交互。中介者模式又称为调停者模式。
八、责任链模式(Chain of Responsibility Pattern)
避免请求发送者与接收者耦合在一块儿,让多个对象都有可能接收请求,将这些对象链接成一条链,而且沿着这条链传递请求,直到有对象处理它为止。
九、策略模式(Strategy Pattern)
定义一系列算法,将每个算法封装起来,并让它们能够相互替换。策略模式让算法独立于使用它的客户而变化。
十、命令模式(Command Pattern)
将一个请求封装为一个对象,从而使咱们可用不一样的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操做。
十一、状态模式(State Pattern)
容许一个对象在其内部状态改变时改变它的行为,对象看起来彷佛修改了它的类。
 
 
 
博主自白

    本人20有余,天资愚钝,深信勤能补拙。酷爱编程,爱钻研,广交码友,耕于三线,日以继夜而使飞燕之身蜕变为大腹便便。web


有志之士点击连接加入技术交流群【专一的程序猿】282087535算法


    文章若是对你有所帮助是个人荣幸,不妥之处但愿指正,转帖请注明本文出自钰火的小栈(http://www.mynawang.com/),请尊重他人的辛勤劳动成果,谢谢!编程

相关文章
相关标签/搜索