二十三种设计模式

简单工厂模式

先抽象定义一个“人”类,针对不同的职业的人都拥有的共同属性,具体到某一个人时,就再去管理他的个性属性。

工厂方法模式

因为简单工厂模式中所有的产品都是由一个工厂创建的,如果再想添加新产品就需要修改工厂的代码,违背了开闭原则,因此,在工厂方法中,多添加一个抽象的工厂类,具体功能的工厂再去特殊实现。

抽象工厂模式

实际生活中,一个工厂常常不止只生产一种产品,而工厂方法中也具有唯一性,所以使用抽象工厂模式,创建分属于不同产品等级中的产品。

建造者模式

比如说一辆汽车,是由许多零部件组成的,组成的过程由建造类负责,客户端类只接受一辆汽车,而不管具体的内部结构。

原型模式

系统中有时候有需要多次使用的对象,这时候只需创建一个对象,复制出多个相同的对象。复制时有深克隆与浅克隆,浅克隆就像快捷方式,深克隆就像复制粘贴。

单例模式

一个人只有一个身份证号码,Windows也只能同事打开一个任务管理器,单例模式就是保证这种只能出现一个的“主键”不重复出现。

适配器模式

如其名,适配器模式就像电源适配器一样,是将三孔插头转换为笔记本所接受的圆孔插口的类。

桥接模式

提供了不同元素组合起来的接口,比如,笔类有钢笔和铅笔两个子类,颜色类有黑色白色两个子类,可以组成黑色铅笔,白色铅笔,黑色钢笔,白色钢笔。

组合模式

是一个树形结构,叶子节点也可以是一个树形结构,有点像递归。比如文件夹下有文件和文件夹,如此反复。

装饰模式

合成复用原则教导我们说,要多用关联,少用继承,于是装饰模式中使用了一个装饰类,具体的装饰作为装饰类的子类,装饰类与具体的构件关联,这样添加具体的装饰时,不会影响构件。

外观模式

将具体的实现封装起来,只把接口呈现出来,比如灯的开关,只有一个开关,具体的接线在墙里。

享元模式

系统的对象数目可能会非常庞大,有一些对象很相似或者相同,享元模式提供了一个共享池。

代理模式

当一个对象不和另一个对象进行交互时,引入“代理”的第三者来实现间接引用。类似我们买东西时,我们不去生产商处买,而在商店里购买。

职责链模式

职责链模式的是某个程序向系统申请资源的过程。为了避免多个对象都接收请求,将这些对象链接成一条链,沿着这条链传递请求。

命令模式

在职责链模式中,避免请求者和接收者耦合,但是没有实现他们的完全解耦,而命令模式就是实现了这个部分。将请求进行封装,可以封装上接受者的相关信息和其他信息,同时可以支持撤销的操作。

解释器模式

通过制作一个“解释器”来识别和处理那些出现率特别高的语句。

迭代器模式

外部对象实现对一个聚合对象的遍历的同时不暴露其具体的内部结构。利用抽象迭代器和具体迭代器、抽象聚合类和具体聚合类,实现存储数据和遍历数据这两个功能,方便了聚合对象的操作。

中介者模式

中介者模式有点类似于代理模式的感觉,都是通过一个对象来实现其他两个对象的交互。在此模式中,使各对象可以独立地改变他们之间的交互,而不一直受其他或更多对象的影响。

备忘录模式

“撤销”功能。一个备忘录记录上一步操作,用户撤销时就说加载备忘录内的记录。

观察者模式

这个听起来很像代理模式或者中介者模式,但是又有所不同。观察者模式,建立了对象的依赖关系,一个对象发生改变的时候,观察者通过类似广播的形式来告知其他对象。

状态模式

比如等红绿灯的时候,颜色的变化。为了不在变化颜色时修改整个类,用状态模式只修改它的状态。

策略模式

对不同的事务有不同的解决方案。策略模式就可以使得系统灵活的选择解决途径,也可以方便的添加新的解决途径。

模板方法模式

模板方法基于代码的复用,将相同的代码放在父类中,具体实现不同的子类。

访问者模式

而访问者模式就是针对不同的对象权限给出不同的内容。在不改变各元素的类的前提下定义作用于这些元素的新操作。

原文地址:https://www.cnblogs.com/a1264393659/p/6672525.html