一、定义 表示一个作用于某对象结构中的各个元素的操作。访问者模式让你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式 二、描述 访问者模式是一种较为复杂的行为型模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如:处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。访问者模式可以使得用户在不修改现有系统的情况下扩展系统的功能,为这些不同类型的元素增加新的操作,包含以下五个角色:1、Visitor(抽象访问者):抽象访问者为对象结构中每一个具体元素类Co...

  JUHf4Cm1RUVa   2024年02月19日   81   0   0 设计模式

一、准备“武器” 本文是通过虚拟机搭建OOS测试环境的,4567是3的前提,武器提取le731、VMWareWorkstation17Player2、WindowsServer2016镜像(需要OfficeOnlineServer2017年4月或更高版本)3、OfficeOnlineServer2016(简称OOS)4、NETFramework4.5.2(NDP452-KB2901954-Web.exe)5、VisualCRedistributablePackagesforVisualStudio2013(vcredist_x64.exe)6、VisualCRedistributablefor...

  JUHf4Cm1RUVa   2024年02月19日   55   0   0 Windows Server

一、定义 定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类不改变一个算法的结构即可重定义该算法的特定步骤。模板方法是一种类行为型模式 二、描述 模板方法模式结构比较简单,其核心是抽象类和其中的模板方法的设计,包含以下两个角色:1、AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重新定义或实现这些步骤。同时,在抽象类中实现了一个模板方法(TemplateMethod),用于定义一个算法的框架。2、ConcreteClas...

  JUHf4Cm1RUVa   2024年01月22日   23   0   0 设计模式

一、定义 定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。策略模式是一种对象行为型模式,又称为政策(Policy)模式。 二、描述 包含以下三个角色:1、Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个功能)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。2、Strategy(抽象策略类):抽象策略类为所支持的算法声明了抽象方法,是所有策略类的父类,它可以是抽象类或具体类,也可以是接口。3、ConcreteStrategy(具体策略类):具体策略类实现了在抽象策略类中声明的算...

  JUHf4Cm1RUVa   2024年01月15日   24   0   0 设计模式

一、定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类,状态模式又称为状态对象,它是一种对象行为模式。 二、描述 状态模式是一种较为复杂的设计模式,用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题,包含以下三个角色:1、Context(环境类):环境类又称为上下文类,它是拥有多种状态的对象。由于环境类的状态存在多样性,且在不同状态下对象的行为有所不同,所以将状态独立出去形成单独的状态类。在环境类中维护一个抽象状态类State的实例,这个实例定义当前状态,在具体实现时,它是一个State子类的对象。2、State(抽象状态类):它用于定义一个接口以封装与环境...

  JUHf4Cm1RUVa   2024年01月09日   30   0   0 设计模式

一、定义 定义对象之间的一种一对多依赖关系,使得当每一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式是一种行为型模式,又称为发布-订阅(Publish-Subscribe)模式、模型-视图(Model-View)模式、源-监听器(Source-Listener)模式或从属者(Dependents)模式。 二、描述 观察者模式是一种使用频率最高的设计模式之一,用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。包含以下四个角色:1、Subject(抽象目标):又称为主题,是被观察的对象。2、ConcreteSubject(具...

  JUHf4Cm1RUVa   2024年01月02日   22   0   0 设计模式

一、定义 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复到原先保存的状态。备忘录模式是一种对象行为型模式,其别名为标记(Token)模式。 二、描述 备忘录模式的核心在于备忘录类以及用于管理备忘录的负责人类的设计,包含以下三个角色:1、Originator(原发器):原发器是一个普通类,它通过创建一个备忘录来存储其当前内部状态,也可以使用备忘录来恢复其内部状态,一般将需要保存内部状态的类设计为原发器。2、Memento(备忘录):备忘录用于存储原发器的内部状态,根据原发器来决定保存哪些内部状态。备忘录的设计一般可以参考原发器的设计,根据实际...

  JUHf4Cm1RUVa   2023年12月25日   26   0   0 设计模式

一、定义 义一个对象来封装一系列的对象交互。中介者模式使各对象不需要显示地相互引用,从而使其耦合松散,而且可以让你相对独立地改变它们之间的交互。中介者模式又称为调停模式,它是一种对象说行为型模式。 二、描述 在中介者模式中,引入了用于协调其他对象/类之间的相互调用的中介者类,为了让系统具有更好的灵活性和可扩展性,通常还提供了抽象中介者,包含以下四个角色:1、Mediator(抽象中介者):它定义了一个接口,该接口用于与各同事对象之间进行通信。2、ConcreteMediator(具体中介者):它是抽象中介者的子类,通过协调各个同事对象来实现协作行为,维持了各个同事对象的引用。3、Colleag...

  JUHf4Cm1RUVa   2023年12月18日   20   0   0 设计模式

一、定义 提供一种方法顺序访问一个聚合对象中的各个元素,且不用暴露该对象的内部表示。迭代器模式是一种对象行为型模式,又称为游标(Cursor)模式。 二、描述 在软件系统中,聚合对象拥有两个职责:一是存储数据,二是遍历数据。从依赖性来看,前者是聚合对象的基本职责,而后者既是可变化的,又是可分离的。因此,可以将遍历数据的行为从聚合对象中分离出来,封装在迭代器对象中,由迭代器来提供遍历聚合对象内部数据的行为,这将简化聚合对象的设计,更加符合单一职责原则的要求。包含以下四个角色:1、Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法。2、ConcreteIte...

  JUHf4Cm1RUVa   2023年12月06日   19   0   0 设计模式

一、定义 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种行为型模式。 二、描述 解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它主要用于描述如何使用面向对象语言构成一个简单的语言解释器,包含以下四个角色:1、AbstractExpression(抽象表达式)在抽象表达式中声明了抽象的解释操作,它是所有终结符表达式和非终结表达式的公共父类。2、TerminalExpression(终结符表达式):TerminalExpression(终结符表达式):终结符表达式是抽象表达式的子类,它实现了与文法中的终结符相关联...

  JUHf4Cm1RUVa   2023年11月30日   26   0   0 设计模式

一、定义 给某一个对象提供一个代理或占位符,并由代理对象控制对原对象的访问。代理模式是一种结构型模式。 二、描述 代理模式的结构比较简单,其核心是代理类,为了让客户端能够一致性地对待真实对象和代理对象,在代理模式中引入了抽象层。包含以下三个角色:1、Subject(抽象主题角色):它声明真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题,客户端通常需要针对抽象主题角色进行编程。2、Proxy(代理主题角色):它包含了对真实主题的引用,从而可以在任何时候操作真实主题对象;在代理主题角色中提供了一个与真实主题角色相同的接口,以便在任何时候都可以代替真实主题;代理主题角...

  JUHf4Cm1RUVa   2023年11月17日   67   0   0 设计模式

一、定义 运用共享技术有效地支持大量细粒度对象的复用,享元模式是一种结构型模式。 二、描述 享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。享元模式的结构较为复杂,一般结合工厂模式一起使用,在其结构图中包含了一个享元工厂类,包含以下四个角色:1、Flyweight(抽象享元类):它通常是一个接口或抽象类,在抽象享元类中声明了具体享元类的公共方法,这些方法可以向外界提供享元对象的内部数据(内部状态),同时也可以通过这些方法设置外部数据(外部状态)2、ConcreteFlyweight(具体享元类):它实现了抽象享元类,其实例称为享元对象,并在具体享元类中为内部提供了存储空间。...

  JUHf4Cm1RUVa   2023年11月08日   33   0   0 设计模式

一、定义 为子系统中的一组接口提供一个一致的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是一种结构型模式。 二、描述 包含以下两个角色:1、Facade(外观角色):在客户端可以调用它的方法,在外观角色中可以知道相关的(一个或多个)子系统的功能和责任;在正常情况下,它将所有从客户端发来的请求委派到相应的子系统中去,传递给相应的子系统对象处理。2、SubSystem(子系统角色):在软件系统中可以有一个或者多个子系统角色,每一个子系统可以不是一个单独的类,而是一个类的集合,它实现子系统的功能;每一个子系统都可以被客户端直接调用,或者被外观角色调用,它处理外观类传...

  JUHf4Cm1RUVa   2023年11月02日   46   0   0 设计模式

一、定义 动态地给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。装饰模式是一种结构型模式。 二、描述 包含以下三个角色:1、Component(抽象构件):它是具体构件和抽象装饰类的父类,声明了在具体构件中实现的业务方法,它的引入可以是客户端以一致的方式处理未被装饰的对象以及装饰之后的对象,实现客户端的透明操作。2、ConcreteComponent(具体构件):它是抽象构件的子类,用于定义具体的构件对象,实现了在抽象构件中声明的方法,装饰类可以给它增加额外的职责(方法)。3、Decorator(抽象装饰类):它也是抽象构件类的子类,用于给具体构件...

  JUHf4Cm1RUVa   2023年11月02日   64   0   0 设计模式

一、定义 组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式让客户端可以统一对待单个对象和组合对象。组合模式是一种结构型模式。 二、描述 包含以下三个角色:1、Component(抽象构件):它可以是接口或抽象类,为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和实现。在抽象构件中定义了访问及管理它的子构件的方法,例如增加子构件、删除子构件、获取子构件等。2、Leaf(叶子构件):它在组合结构中表示叶子结点对象,叶子结点没有子节点,它实现了在抽象构件中定义的行为。对于那些访问及管理子构件的方法,可以通过抛出异常、提示错误等方式进行处理。3、Compo...

  JUHf4Cm1RUVa   2023年11月02日   33   0   0 设计模式

一、定义 将抽象部分与它的实现部分解耦,使两者都能够独立变化,桥接模式是一种结构型模式。 二、描述 包含以下四个角色:1、Abstraction(抽象类):它是用于定义抽象类的接口,通常是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Implementor之间具有关联关系,既可以包含抽象业务方法,也可以包含具体业务方法。2、RefinedAbstratction(扩充抽象类):它扩充由Abstraction定义的接口,通常情况下他不再是抽象类而是具体类,实现了在Abstraction中声明的抽象业务方法,在RefinedAbstractio...

  JUHf4Cm1RUVa   2023年11月02日   66   0   0 设计模式

一、前言 工厂模式常见的词:简单工厂、工厂方法、抽象工厂。简单工厂不属于23种经典设计模式,但通常将它作为学习其他工厂模式的基础。 二、简单工厂 1、定义 定义一个工厂类,它可以根据参数的不同返回不同类型的实例,被创建的实例通常都具有共同的父类。由于简单的工厂模式中用于创建实例的方法通常是静态方法,所以简单工厂又被称作为静态工厂。 2、例子 例:开发一套图表库,根据不同的参数可以创建柱状图BarChart,直线图LineChart,饼状图PieChart,下面使用简单工厂来实现。Chart:抽象图表接口,充当抽象产品类 namespace_02_FactoryMethod { internal...

  JUHf4Cm1RUVa   2023年11月01日   54   0   0 设计模式

一、定义 提供一个创建一系列相关或互相依赖对象的接口,而无须指定他们具体的类,抽象工厂模式是一种创建型模式。 二、描述 抽象工厂比工厂方法的抽象程度更高,通过引入了工厂等级结构,解决了简单工厂模式中工厂类职责太重的原则。为了更好的理解抽象工厂模式,引入两个概念:1、产品等级结构:指不同品牌的同一类型产品,如:小米电视机、海信电视机、索尼电视机2、产品族:指同一品牌的不同了类型产品,如:小米电视机、小米手机、小米电脑抽象工厂模式中的每个具体工厂提供了多个工厂方法用于产生多种不同类型的产品,这些产品构成了一个产品族,它包含以下四个角色:1、AbstractFactory(抽象工厂):它声明了一组用...

  JUHf4Cm1RUVa   2023年11月01日   95   0   0 设计模式

一、定义 讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种创建型模式。 二、描述 包含以下四个角色:1、Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法:一类是BuildPartX(),用于创建复杂对象的各个部件;另一类是GetResult(),用于返回生成好的复杂对象。Builder既可以是抽象类,也可以是接口。2、ConcreteBuilder(具体建造者):它实现了Builder接口,实现各个部件的具体构造和装配方法,定义并明确其所创建的复杂对象,还可以提供一个方法返回创建好的复杂...

  JUHf4Cm1RUVa   2023年11月01日   102   0   0 设计模式

一、定义 使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。原型模式是一种创建型模式。 二、描述 包含以下三个角色:1、Prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至可以是具体实现类。2、ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己的一个克隆对象。3、Client(客户类):在客户类中,让一个原型对象克隆自身从而创建一个新的对象,只需要直接实例化或通过工厂方法等方式创建一个原型对象,再通过调用该对象的克隆方法即可得到多个相同的对象。由于客户类针...

  JUHf4Cm1RUVa   2023年11月01日   89   0   0 设计模式
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~