![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
sjk2lq
这个作者很懒,什么都没留下…
展开
-
命令模式
主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。定义:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。原创 2024-05-17 10:16:52 · 394 阅读 · 0 评论 -
责任链模式
主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。定义:如果有多个对象有机会处理请求,责任链可使请求的发送者和接受者解耦,请求沿着责任链传递,直到有一个对象处理了它为止。原创 2024-05-16 17:19:24 · 299 阅读 · 0 评论 -
迭代器模式
缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。1、它支持以不同的方式遍历一个聚合对象。3、在同一个聚合上可以有多个遍历。2、迭代器简化了聚合类。原创 2024-05-16 16:18:45 · 290 阅读 · 0 评论 -
观察者模式
定义: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。关键代码:在抽象类里有一个 ArrayList 存放观察者们。如何解决:使用面向对象技术,可以将这种依赖关系弱化。原创 2024-04-02 21:42:48 · 594 阅读 · 0 评论 -
模板方法模式
具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节。定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。原创 2024-04-02 20:58:59 · 544 阅读 · 0 评论 -
策略模式
定义: 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。优点: 1、算法可以自由切换。2、避免使用多重条件判断。缺点: 1、策略类会增多。2、所有策略类都需要对外暴露。原创 2024-04-02 16:56:13 · 616 阅读 · 0 评论 -
生成器模式
指挥者的职责是负责向用户提供具体生成器,即指挥者将请求具体生成器类来构造用户所需要的Product对象,如果所请求的具体生成器成功地构造出Product对象,指挥者就可以让该具体生产器返回所构造的Product对象。定义解释: 我们可以将生成器模式理解为,假设我们有一个对象需要建立,这个对象是由多个组件(Component)组合而成,每个组件的建立都比较复杂,但运用组件来建立所需的对象非常简单,所以我们就可以将构建复杂组件的步骤与运用组件构建对象分离,使用builder模式可以建立。原创 2024-03-28 17:02:52 · 138 阅读 · 0 评论 -
原型模式
深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。clone明显是深复制,clone出来的对象是是不能去影响原型对象的。简单地理解,其实就是当需要创建一个指定的对象时,我们刚好有一个这样的对象,但是又不能直接使用,我会clone一个一毛一样的新对象来使用;浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。定义:通过复制现有实例来创建新的实例,无需知道相应类的信息。原创 2024-03-28 17:09:29 · 416 阅读 · 0 评论 -
单例模式
定义:确保一个类最多只有一个实例,并提供一个全局访问点。单例模式可以分为两种:预加载和懒加载。原创 2024-03-28 16:17:17 · 291 阅读 · 0 评论 -
抽象工厂模式
定义了一个接口用于创建相关或有依赖关系的对象族,而无需明确指定具体类。原创 2024-03-26 11:28:25 · 375 阅读 · 0 评论 -
工厂方法模式
定义:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。原创 2024-03-26 11:25:35 · 347 阅读 · 0 评论 -
简单工厂模式
定义:定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。定义:定义了一个创建对象的类,由这个类来封装实例化对象的行为。原创 2024-03-26 10:30:45 · 318 阅读 · 0 评论 -
享元模式
通过共享的方式高效的支持大量细粒度的对象。在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建。原创 2024-03-26 09:28:49 · 631 阅读 · 0 评论 -
组合模式
有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分 - 整体”的关系,使用户对单个对象和组合对象具有一致的访问性。如商场售卖商品,需要计算售出商品总价。原创 2024-03-15 10:50:56 · 314 阅读 · 0 评论 -
桥接模式
当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。将抽象部分与它的实现部分分离,使它们都可以独立地变化。原创 2024-03-08 16:08:00 · 315 阅读 · 0 评论 -
代理模式
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通过编程言语特性,实现动态创建代理类。原创 2024-03-06 22:55:52 · 347 阅读 · 0 评论 -
装饰者模式
使用装饰者设计模式,可以动态对已有对象附加新功能,在对象功能扩展方面,它比继承更有弹性。原创 2024-03-03 23:43:34 · 421 阅读 · 0 评论 -
适配器模式
/ 三、接口适配器模式(不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求,它适用于一个接口不想使用其所有的方法的情况。// 二、对象适配器模式(对象适配器和类适配器使用了不同的方法实现适配,对象适配器使用组合,类适配器使用继承)Console.WriteLine("接口不匹配,无法投影");// 一、类适配器模式(通过多重继承目标接口和被适配者类方式来实现适配)// 接口适配器模式。原创 2024-02-29 22:14:52 · 339 阅读 · 0 评论