首页 > 代码库 > 设计模式总结
设计模式总结
本文转载自
http://www.mynawang.com/
相关代码可访问
https://github.com/mynawang/Design-Pattern-Learning
什么是设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式的6个原则
1、迪米特法原则(Demeter Principle)
迪米特法原则又称为最少知道原则,也就是说,一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。也就是我们平常所说的”高内聚,低耦合”。
2、单一职责原则(Single Responsibility Principle)
就一个类而言,应该仅有一个引起它变化的原因。简而言之,就是功能要单一,一个类只负责一项职责。
3、接口隔离原则(Interface Segregation Principle)
使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。
4、里氏替换原则(Liskov Substitution Principle)
所有引用基类(父类)的地方必须能透明地使用其子类的对象。即继承于派生的规则。
5、依赖倒置原则(Dependence Inversion Principle)
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。
6、开闭原则(Open-Closed Principle)
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
设计模式分类
创建型模式
1、抽象工厂模式(Abstract Factory Pattern)
提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类。
2、工厂方法模式(Factory Method Pattern)
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
3、建造者模式(Builder Pattern)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
4、单例模式(Singleton Pattern)
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
5、原型模式(Prototype Pattern)
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。
结构型模式
1、适配器模式(Adapter Pattern)
是作为两个不兼容的接口之间的桥梁。它结合了两个独立接口的功能。
2、装饰器模式(Decorator Pattern)
允许向一个现有的对象添加新的功能,同时又不改变其结构。它是作为现有的类的一个包装。
3、代理模式(Proxy Pattern)
一个类代表另一个类的功能。创建具有现有对象的对象,以便向外界提供功能接口。
4、桥接模式(Bridge Pattern)
用于把抽象化与实现化解耦,使得二者可以独立变化。通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
5、外观模式(Facade Pattern)
隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。向现有的系统添加一个接口,来隐藏系统的复杂性。
6、享元模式(Flyweight Pattern)
主要用于减少创建对象的数量,以减少内存占用和提高性能。通过共享技术实现相同或相似对象的重用。
7、组合模式(Composite Pattern)
又叫部分-整体模式,是用于把一组相似的对象当作一个单一的对象。将对象组织到树结构中,可以用来描述整体与部分的关系。
行为型模式
1、模板方法模式(Template Method Pattern)
一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
2、备忘录模式(Memento Pattern)
保存一个对象的某个状态,以便在适当的时候恢复对象。
3、迭代子模式(Iterator Pattern)
用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
4、访问者模式(Visitor Pattern)
表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
5、观察者模式(Observer Pattern)
定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
6、解释器模式(Interpreter Pattern)
定义语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”意思是使用规定格式和语法的代码。
7、中介者模式(Mediator Pattern)
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。
8、责任链模式(Chain of Responsibility Pattern)
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
9、策略模式(Strategy Pattern)
定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。
10、命令模式(Command Pattern)
将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。
11、状态模式(State Pattern)
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
博主自白
本人20有余,天资愚钝,深信勤能补拙。酷爱编程,爱钻研,广交码友,耕于三线,日以继夜而使飞燕之身蜕变为大腹便便。
有志之士点击链接加入技术交流群【专注的程序猿】282087535
文章如果对你有所帮助是我的荣幸,不妥之处希望指正,转帖请注明本文出自钰火的小栈(http://www.mynawang.com/),请尊重他人的辛勤劳动成果,谢谢!
设计模式总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。