设计模式
文章平均质量分 75
设计模式
DF10F-0001A
打工人
展开
-
设计模式——(23)职责链模式
1、定义职责链也叫责任链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了。2、UML类图 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。 具体处理者(Concrete原创 2021-11-08 13:14:34 · 41 阅读 · 0 评论 -
设计模式——(22)策略模式
1、定义该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。简述:分别封装行为接口,实现算法族,超类里放行为接口对象,在子类里具体设定行为对象。2、UML类图 抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。原创 2021-11-08 13:14:14 · 104 阅读 · 0 评论 -
设计模式——(21)状态模式
1、定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。在状态模式中引入了抽象状态类和具体状态类,它们是状态模式的核心2、UML类图 Context(环境类):环境类又称为上下文类,它是拥有多种状态的对象。由于环境类的状态存在多样性且在不同状态下对象的行为有所不同,因此将状态独立出去形成单独的状态类。在环境类中维护一个抽象状态类State的实例,这个实例定义当前状态,在具体实原创 2021-11-08 13:14:09 · 80 阅读 · 0 评论 -
设计模式——(20)解释器模式
1、定义解释器(Interpreter)模式是一种对象的行为模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式的本质:分离实现,解释执行2、UML类图 抽象表达式(AbstractExpression)角色:约定解释器的解释操作,主要是一个interpret()方法。 终结符表达式(TerminalExpression)角色:用来实现文法中和终结符相关的解释操作,不再包含其它的解释器,如果用组合模式来构建抽象语法.原创 2021-11-08 13:14:01 · 97 阅读 · 0 评论 -
设计模式——(19)备忘录模式
1、定义在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。备忘录模式的核心是备忘录类以及用于管理备忘录的负责人类的设计。2、UML类图(1)、类图 Originator(原发器):它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态,一般将需要保存内部状态的类设计为原发器。 Memento(备忘录):存储原发器的内部..原创 2021-11-07 13:21:17 · 117 阅读 · 0 评论 -
设计模式——(18)中介者模式
1、定义中介者模式又称为调停者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式的本质:封装交互2、UML类图 抽象中介者(Mediator)角色:一般定义为接口,用来定义各个同事之间交互需要的方法,可以是公共的通信方法,比如 changed()方法,大家都用,也可以是小范围的交互方法。 具体中介者(ConcreteMediator)角色:实现Mediator中定义的接口,它需要了解并原创 2021-11-07 13:21:04 · 118 阅读 · 0 评论 -
设计模式——(17)观察者模式
1、定义观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。2、UML类图 抽象目标角色(Subject):目标角色知道它的观察者,可以有任意多个观察者观察同一个目标。并且提供注册和删除观察者对象的接口。目标角色往往由抽象类或者接口来实现。 抽象观察者角色(Observer):为那些在目标发生改原创 2021-11-07 13:21:11 · 96 阅读 · 0 评论 -
设计模式——(16)迭代器模式
1、定义提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。2、UML类图 抽象容器角色(Aggregate):负责提供创建具体迭代器角色的接口,一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。 具体容器角色(ConcreteAggregate):就是实现抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链原创 2021-11-07 13:20:54 · 120 阅读 · 0 评论 -
设计模式——(15)访问者模式
1、定义封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。可以对定义这么理解:有这么一个操作,它是作用于一些元素之上的,而这些元素属于某一个对象结构。同时这个操作是在不改变各元素类的前提下,在这个前提下定义新操作是访问者模式精髓中的精髓。2、UML类图 Visitor:接口或者抽象类,它定义了对每一个元素(Element)访问的行为,它的参数就是可以访问的元素,它的方法数理论上来讲与元素个数是一样的,因此,访问者模式要求元素的类原创 2021-11-07 13:20:44 · 93 阅读 · 0 评论 -
设计模式——(14)命令模式Command
1、定义将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。2、UML类图 命令角色(Command):定义命令的接口,声明执行的方法。 具体命令角色(Concrete Command):实现命令接口,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。 接收者角色(Receiver):负责具体实施和执行一个请求。任何类都可能成为一个接收者,只要它原创 2021-11-07 13:20:29 · 126 阅读 · 0 评论 -
设计模式——(13)模板模式
1、定义定义一个模板结构,将具体内容延迟到子类去实现。2、主要作用在不改变模板结构的前提下在子类中重新定义模板中的内容。3、解决的问题 提高代码复用性 将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中 实现了反向控制 通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则” 4、UML类图 AbstractClass:抽象类。用来定义算法骨架和原语操作,具体的子类可以通过重定义这些原语操作来实原创 2021-11-07 13:20:22 · 82 阅读 · 0 评论 -
设计模式——(12)代理模式
1、定义由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。2、UML类图 抽象主题角色(Subject):声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象。 具体主题角色(RealSubject):也称为委托角色或者被代理角色。定义了代理对象所代表的目标对象。 代理主题角色(Proxy):也叫委托类、代理类。代理对象内部含有目标对象.原创 2021-11-07 13:20:14 · 100 阅读 · 0 评论 -
设计模式——(11)享元模式
1、定义运用共享技术有效地支持大量细粒度对象的复用。使用享元模式前:使用享元模式后:2、单纯享元模式(1)、UML类图 抽象享元Flyweight类:它简单地说就是一个产品的抽象类,同时定义出对象的外部状态和内部状态的接口或实现。 具体享元ConcreteFlyweight类:实现抽象享元类。该角色中需要注意的是内部状态处理应该与环境无关,不应该出现一个操作改变了内部状态,同时修改了外部状态,这是绝对不允许的 享元工厂FlyweightFactory原创 2021-11-07 13:20:05 · 98 阅读 · 0 评论 -
设计模式——(10)外观模式Facade
1、定义通过创建一个统一的外观类,用来包装子系统中一个或者多个复杂的类,客户端可通过调用外观类的方法来调用内部子系统中所有方法2、主要作用 实现客户类与子系统类的松耦合 降低原有系统的复杂度 提高了客户端使用的便捷性,使得客户端无须关心子系统的工作细节,通过外观角色即可调用相关功能。 3、解决的问题 避免了系统与系统之间的高耦合度 使得复杂的子系统用法变得简单 4、模式原理(1)、UML类图 外观(Facade)角色:为多个子系统对外提原创 2021-11-06 00:45:09 · 129 阅读 · 0 评论 -
设计模式——(9)组合模式
1、定义在不改变原有对象的基础之上,将功能附加到对象上。提供了比继承更有弹性的替代方案(扩展原有对象功能)2、作用 降低创建复杂对象的复杂度 隔离了创建对象的构建过程以及表示 3、UML类图 Component(抽象构件):叶子构件与容器构件共同继承的父类或者是共同实现的接口,该角色中包含所有子类共有方法的声明和实现,在抽象构件中定义了管理子构件的方法,新增构件、删除构件、获取构件。 Leaf(叶子构件):表示叶子节点,没有子节点,对于继承父类的管理子节点原创 2021-11-06 00:43:51 · 80 阅读 · 0 评论 -
设计模式——(8)装饰者模式
1、定义动态地给一个对象增加一些额外的职责。就扩张功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。就像在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。2、UML类图 Component(抽象构建):它是具体构建类和抽象装饰类的父类。声明具体构建类的业务方法,它可以使客户端同等的对待被装饰类修饰过的类和没被修饰过的类。实现客户端的透明操作。 ConcreteComponent(具体构件类):它实现了抽象构建类的业务方法,装饰类会给原创 2021-11-06 00:42:15 · 87 阅读 · 0 评论 -
设计模式——(7)桥接模式
1、定义将抽象部分与它的实现部分分离,使它们都可以独立地变化。2、UML类图 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。 具体实现化(Concrete Implementor)角色:给出实现化角色接原创 2021-11-06 00:39:49 · 103 阅读 · 0 评论 -
设计模式——(6)适配器模式
一、类适配器1、定义定义一个包装类,用于包装不兼容接口的对象 包装类 = 适配器Adapter; 被包装对象 = 适配者Adaptee = 被适配的类 2、作用把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。3、解决的问题原本由于接口不兼容而不能一起工作的那些类可以在一起工作4、模式原理(1)、UML类图从上图可以看出: 冲突:Target期待调用Request方法,而Adaptee并没有(原创 2021-11-06 00:38:05 · 112 阅读 · 0 评论 -
设计模式——(5)建造者模式
1、定义也叫生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2、作用在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。3、解决的问题 方便用户创建复杂的对象(不需要知道实现过程) 代码复用性 & 封装性(将对象构建过程和细节进行封装 & 复用) 4、模式原理(1)、UML类图 指挥者(Director)直接和客户(Client)进行需求沟通; 沟通后指挥者将客户创建产品的需求划分为原创 2021-11-06 00:35:40 · 73 阅读 · 0 评论 -
设计模式——(4)原型模式
1、定义原型模式:使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式2、UML类图 Prototype 声明一个克隆自身的接口。 ConcretePrototype 实现一个克隆自身的操作。 Client 让一个原型克隆自身从而创建一个新的对象。 3、何时使用 当一个系统应该独立于它的产品创建,构成和表示时。 当要实例化的类是在运行时刻指定时,例如,通过动态装载。 为了避免创建一个与产品类层次平行原创 2021-11-06 00:35:49 · 79 阅读 · 0 评论 -
设计模式——(3)抽象工厂模式
1、介绍抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例。简单工厂模式、工...原创 2021-11-06 00:31:23 · 128 阅读 · 0 评论 -
设计模式——(2)、工厂模式
一、简单工厂模式1、介绍简单工厂模式又叫静态方法模式(因为工厂类定义了一个静态方法)现实生活中,工厂是负责生产产品的;同样在设计模式中,简单工厂模式我们可以理解为负责生产对象的一个类,称为“工厂类”Factory2、解决的问题即使用者可直接消费产品而不需要知道其生产的细节3、模式原理(1)、模式组成 抽象产品(Product) 具体产品的父类 描述产品的公共接口 具体产品(Concrete Product)原创 2021-11-06 00:29:11 · 184 阅读 · 0 评论 -
设计模式——(1)单例模式
一、单例设计模式所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法)。1、单例设计模式解决的问题:保证一个类在内存中的对象唯一性,比如对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性2、单例设计模式如何保证对象的唯一性?1、不允许其他程序用new创建该类对象。2、在该类创建一个本类实例对象。3、对外提供一个方法让其他程序可以获取该对象3、单例设计模式设计步骤:1、私原创 2021-11-06 00:25:50 · 85 阅读 · 0 评论