目录
一、设计模式描述
设计模式是不限于编程语言的,并且并不是只有23种设计模式,只是说经常使用的大概有23种,所以简称23种设计模式。设计模式的产生是根据日常各种软件开发后出现的问题,进行大量的实践,是问题的一种解决方案。所以,当我们遇到某一种问题后,就可以参考其中的某一个或者几个设计模式进行开发。并且设计模式,在软件开发中,不一定非要使用,也不是软件开发中只能使用一种设计模式,可以多个设计模式进行复合使用,总之一点,设计模式是解决问题的,而不是制造问题的,解决问题才是关键。
23种设计模式可以分为3大类型,包括创建型设计模式,结构型设计模式和行为型设计模式。
二、设计原则
设计模式的创造,需要遵守设计原则。
1.单一职责原则
一个类应该仅有一个引起它变化的原因。
2.开放封闭原则
类模块应该是可拓展的,但是不可修改(对扩展开放,对更改封闭)。
3.里氏替换原则
子类必须能够替换它们的基类。
4.依赖倒置原则
高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
抽象不应该依赖于实现细节,实现细节应该依赖于抽象。
5.接口隔离原则
不应该强迫客户程序依赖于它们不用的方法。
三、创建型设计模式
创建型设计模式包括5种:
单例模式
确保一个类最多只有一个实例,并提供一个全局访问点。
工厂方法模式
定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。
抽象工厂模式
定义了一个接口用于创建相关或有依赖关系的对象族,而无需明确指定具体类。
建造者模式
封装一个复杂对象构造过程,并允许按步骤构造。
原型模式
通过复制现有实例来创建新的实例,无需知道相应类的信息。
四、结构型设计模式
结构型设计模式包括7种:
适配器模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。
装饰器模式
动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性。
代理模式
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。
外观模式
隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。
桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
组合模式
有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。
享元模式
通过共享的方式高效的支持大量细粒度的对象。
五、行为型设计模式
行为型设计模式包括11种:
策略模式
策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。
模板方法模式
定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
迭代子模式
提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
责任链模式
如果有多个对象有机会处理请求,责任链可使请求的发送者和接受者解耦,请求沿着责任链传递,直到有一个对象处理了它为止。
命令模式
将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。
状态模式
在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
访问者模式
将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离。
中介模式
定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
解释器模式
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语
言中的句子。
来源:https://blog.csdn.net/u012563853/article/details/125947884?spm=1001.2014.3001.5502