欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 23种设计模式

23种设计模式

2024/10/25 3:15:55 来源:https://blog.csdn.net/zjp_01/article/details/143209698  浏览:    关键词:23种设计模式

5加7=11:创建型:5;结构型:7;行为型:11

创建型:单抽工建原

  • 单例模式:

保证一个类只有一个实例(私有化构造方法),并提供一个访问它的全局访问点(提供静态getInstance方法,实例用volatile修饰,防止指令重排),双重校验+锁(双检锁)的写法如下:

public class Singleton6 {private static volatile Singleton6 instance;private Singleton6() {}public static Singleton6 getInstance() {if (instance == null) {synchronized (Singleton6.class) {if (instance == null) {instance = new Singleton6();}}}return instance;}
}
  •  抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体类
  • 工厂方法:工厂方法模式定义了一个创建对象的接口,但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类
  • 建造者:主要记住4个角色:产品,抽象建造者(抽象类,拥有具体产品),具体建造者(具体类,继承抽象建造者,返回具体产品),指挥者(拥有建造者,调用建造者创建产品):

  • 原型:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象

结构型:桥代理组装适配器,享元回家装饰外观

        有个姓桥的代理组装适配器,他儿子享元拿回家装饰外观去啦

  • 桥接模式:将抽象部分与它的实现部分相分离,使他们可以独立的变化。一开始是接口和实现类,现在要在实现类中加一些功能,在不修改实现类的情况下,可以定义一个抽象类来充当桥,抽象类中拥有接口的引用,在想在接口实现类中加业务时,直接找具体的”桥“,在具体的桥中加业务:

  • 代理模式:为其他对象提供一种代理以控制对这个对象的访问。和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制;在代理模式中,目标类对于客户端是透明的,由代理类隐藏其具体信息并响应客户端请求;而装饰者中客户端对特定的目标类对象进行增强;代理类与真实对象的关系常在编译时就确定了,而装饰者在运行时递归构造。
  • 组合模式:它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式一句树形结构来组合对象,用来表示部分以及整体层次。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理各个对象以及组合对象。
  • 适配器:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。用一个接口和实现类(适配器)充当转换,适配器实现类拥有原实现类引用,并转换成接口输出:

  • 享元:旨在通过共享对象来最大化内存利用和性能提升,享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。当系统中存在大量相似对象时,每个对象都需要占用一定的内存空间,如果这些对象的大部分属性是相同的,那么频繁创建这些对象会导致内存消耗过大。享元模式将这些相同部分抽取出来作为共享的内部状态,在需要时进行共享,从而减少内存占用。需要有一下几个角色:抽象享元:抽象类;具体享元:抽象类实现;享元工厂,内部维护一个map存放共享的享元。
  • 装饰者:动态的将新功能附加到对象上。内部其实就是不断的递归调用。

具体角色:

抽象组件(Component) :定义装饰方法的规范
被装饰者(ConcreteComponent) :Component的具体实现,也就是我们要装饰的具体对象。
装饰者组件(Decorator) :持有组件(Component)对象的实例引用,该类的职责就是为了装饰具体组件对象,定义的规范。
具体装饰(ConcreteDecorator) :负责给构件对象装饰附加的功能

1.装饰者和被装饰者有相同的超类(Component)。
2.你可以用一个或多个具体装饰(ConcreteDecorator)包装一个对象。
3.装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的。(类似代理模式)
4.对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地用你喜欢的装饰者来装饰对象。

  • 外观:为子系统中的一组接口提供一致的界面,facade提供了一高层接口,这个接口使得子系统更容易使用。

行为型:访问者写好策略备忘录,观察模板迭代的状态,命令中介解释责任链

        这句话讲的就是看房子的经过。看房子的人就是访问者,看房前要写看房策略和备忘录,不能马马虎虎地去看房子。去看房子的时候,要仔细观察楼板(模板)层叠(迭代)的状态。
看完房子,命令中介解释清楚产权的责任链。

访问者:

策略:

备忘录:

观察者:

模板方法:

迭代器:

状态:

命令:

中介者:

解释器:

责任链:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com