![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 62
lisin-lee-cooper
这个作者很懒,什么都没留下…
展开
-
【设计模式】【行为型】备忘录模式
一.概述1.1 概述又叫快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态1.2 结构发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。管理者(Caretaker)角色:对备忘录进行管理,提供保存与获取备忘录的功能,但其不能原创 2022-05-23 23:41:03 · 111 阅读 · 0 评论 -
【设计模式】【行为型】访问者模式
一.概述1.1 概述1.2 结构二.场景三.类图及实现原创 2022-05-23 23:15:35 · 83 阅读 · 0 评论 -
【设计模式】【行为型】迭代器模式
一.概述1.1 概述提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。1.2 结构抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例。抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法。具体迭代器(Concretelterator)角色:实现抽象迭代器接口中所定义的方法,完成原创 2022-05-23 20:51:36 · 116 阅读 · 0 评论 -
【设计模式】【行为型】中介者模式
一.概述1.1 概述又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。1.2 结构抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。具体中介者(ConcreteMediator)角色:实现中介者接口,定义一个 List 来管理同事对象,协调各个同事角色之间的交互关系,因此它依赖于同事角色。抽象同事类(Colleague)角色:定义同事类的接口,保存中介者对象,提供同事对象交互的抽原创 2022-05-23 20:17:20 · 71 阅读 · 0 评论 -
【设计模式】【行为型】观察者模式
一.概述1.1 概述又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。1.2 结构Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,原创 2022-05-23 19:29:21 · 77 阅读 · 0 评论 -
【设计模式】【行为型】命令模式
一.概述1.1 概述将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。1.2 结构命令模式包含以下主要角色:抽象命令类(Command)角色: 定义命令的接口,声明执行的方法。具体命令(Concrete Command)角色:具体的命令,实现命令接口;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。实现者/接收者(Receiver)角色: 接收者,真正执行命令的对象。任何类都可能成原创 2022-05-22 22:42:59 · 166 阅读 · 0 评论 -
【设计模式】【结构型】享元模式
一.概述1.1 概述运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。1.2 结构享元(Flyweight )模式中存在以下两种状态:内部状态,即不会随着环境的改变而改变的可共享部分。外部状态,指随环境改变而改变的不可以共享的部分。享元模式的实现享元模式的主要有以下角色:抽象享元角色(Flyweight):通常是一个接口或抽象类,在抽象享元类中声明了具体享元类公共的方法,这些方法可以向外界提原创 2022-05-22 21:16:12 · 64 阅读 · 0 评论 -
【设计模式】【结构型】组合模式
一.概述1.1 概述又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。1.2 结构组合模式主要包含三种角色:抽象根节点( ):定义系统各层次对象的共有方法和属性,可以预先定义一些默认行为和属性。树枝节点(Composite):定义树枝节点的行为,存储子节点,组合树枝节点和叶子节点形成一个树形结构。叶子节点(Leaf):叶子节点对象,其下再无分支,是系统层次遍历的最原创 2022-05-22 20:47:40 · 75 阅读 · 0 评论 -
【设计模式】【结构型】外观模式
一.概念1.1概念又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。1.2结构外观(Facade)模式包含以下主要角色:外观(Facade)角色:为多个子系统对外提供一个共同的接口。子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它。二.场景物联网时代,可以将打开灯、打开电视、打开空调;睡觉原创 2022-05-22 18:15:36 · 63 阅读 · 0 评论 -
【设计模式】【结构型】桥接模式
一.概念1.1概念将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和现这两个可变维度的耦合度。1.2 结构桥接(Bridge)模式包含以下主要角色:抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用。扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用。原创 2022-05-22 18:03:09 · 80 阅读 · 0 评论 -
【设计模式】【结构型】装饰者模式
一.概述1.1 概念指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。1.2 结构装饰(Decorator)模式中的角色:抽象构件(Component)角色 :定义一个抽象接口以规范准备接收附加责任的对象。具体构件(Concrete Component)角色 :实现抽象构件,通过装饰角色为其添加一些职责。抽象装饰(Decorator)角色 : 继承或实现抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。具体装饰(ConcreteDecora原创 2022-05-22 17:11:24 · 70 阅读 · 0 评论 -
【设计模式】【结构型】适配器模式
一.概念将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类适配器模式和对象适配器模式,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。适配器模式(Adapter)包含以下主要角色:目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。适配器(Adapter)类:它是一个转换器,通过继承或引用适原创 2022-05-22 16:28:10 · 75 阅读 · 0 评论 -
【设计模式】【创建型】建造者模式
一.概述将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型原创 2022-05-21 22:00:28 · 90 阅读 · 0 评论 -
【设计模式】【创建型】原型模式
一.概述1.1用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。1.2结构原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新的对象。二.场景2.1 类图2.2 代码public class Realizetype implements Cloneable { public Real原创 2022-05-21 21:35:00 · 147 阅读 · 0 评论 -
【设计模式】【创建型】单例模式
/** * 饿汉式 * 类加载的时候完成实例化,线程安全 * @Date 2022-02-24 11:38 */public class HungaryHanStyle { private static HungaryHanStyle instance = new HungaryHanStyle(); private HungaryHanStyle() { } public static HungaryHanStyle getInstance() {原创 2022-02-24 14:12:22 · 241 阅读 · 0 评论 -
【设计模式】概述
一.概述1.1 概念软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。1.2 分类创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF(四人组)书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5原创 2022-05-21 17:07:01 · 67 阅读 · 0 评论 -
【设计模式】【行为型】策略模式之模拟端午回家
一.概念在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。二.场景马上就是端午小长假了,大家应该早已坐不住了,心早已飞向远方了,怎么回家呢,临近这个点我估计在座的各位早已做好了充分的准备,虽然过程不一样,结果都是从一个城市去往另一个城市,选择看起来很多,其实也不过 飞机,火车,小汽车这几原创 2021-06-11 17:05:28 · 244 阅读 · 1 评论 -
【设计模式】【行为型】责任链模式之模拟工单流转
一.概念责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。二.场景现场出现特殊需要处理的情况、客户电话投诉或者订单发送状态转变需要触发其他连带修改的场景,一般都是一线人员会创建工单跟进,然后工单是有一定的处理流程的:客服专原创 2021-06-11 00:56:30 · 537 阅读 · 0 评论 -
【设计模式】【结构型】代理模式之模拟中介
一.概念在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。二.场景现实生活中,很多场景都需要找中介,从出生到生命的结束,数不胜数;抛开理想不说,其中最重要的不过房子车子和票子了;其中几乎都是不可能单独完成,中介的工作在其中起了极大的作用,这类似我们设计模式中的代理模式,其中代理模式又分静态代理和动态代理,静态代理功能单一,只能处理一中事物,而动态代理可以同一类事物。现实生活中无论原创 2021-06-10 20:25:34 · 418 阅读 · 0 评论 -
【设计模式】单例模式之DCL
一.概念单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。二.场景数据库的连接池不会反复创建spring中一个单例模式bean的生成和使用在我们平常的代码中需要设置全局的的一些属性保存面试过程中经常会问单例模式DCL的实现方式三.代码实现原创 2021-06-09 17:13:13 · 459 阅读 · 0 评论 -
【设计模式】抽象工厂模式之模拟出租出售
一.概念抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。二.场景北上广深不相信眼泪,北上广深房价也高不可攀,在这些城市上班的人,租房和买房都是十分关键的,租的好走路上班,租不好1小时以上通勤也是分分钟的事,那买房的话就更不在话下了,这里为了业原创 2021-06-08 19:44:00 · 98 阅读 · 0 评论 -
【设计模式】简单工厂模式之模拟公司发放节假日礼品
一.概念工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式;在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。二.场景马上就是端午节了,公司一般都会给员工准备端午节礼品,让你感受到公司无微不至的关怀,让大家更加兢兢业业的工作,从而把你安排的明明白白。三类图及代码实现1.类图2.代码实现2.1礼品发放接口public interface Pres原创 2021-06-04 17:28:13 · 255 阅读 · 1 评论 -
【设计模式】【行为型】模板模式之模拟去商场购物
一.概念在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。二.场景假设你周末的时候陪女朋友去逛街,一般会有不同的商场供你选择,同时交通工具也会因为商场的远近和地理位置而不同,但是去逛街的大体流程是固定的:去商场 ->挑选->试穿->付钱->回家模板模式的核心设计思路是通过在,抽象类中定义抽象方法的执行顺序,并将抽象方法设定为只有子原创 2021-06-04 15:06:20 · 307 阅读 · 2 评论