设计模式
文章平均质量分 84
小飞侠hello
这个作者很懒,什么都没留下…
展开
-
c++ uml时序图
可以清晰地表示交互的先后顺序与时序关系,而流程图注重过程的控制流程,可以描述每个步骤的执行方式以及处理逻辑。时序图中参与交互的实体只有两类,即角色(Actor)和对象(Object)与时序关系,流程图则是针对一个过程或者活动进行全面而细致的展开。之间的复杂关系,流程图通常描述单一对象的各种操作和转换过程。通过描述对象之间发送消息的。显示多个对象之间的动态协作。重点是明确好角色和对象。原创 2023-09-06 10:06:44 · 515 阅读 · 0 评论 -
设计模式之访问者模式
访问者模式(Visitor Pattern):提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。解决问题:使得用户可以在不修改现有系统的情况下扩展系统的功能,为这些不同类型的元素增加新的操作。实现的技术原理:虚函数、继承、多态、重载、双重分派、关联、依赖。在访问者模式结构图中包含如下几个角色: ●Vistor(抽象访问者):抽象访问者为对象结构中每一个具体元素类ConcreteElem...原创 2022-02-07 17:28:58 · 254 阅读 · 0 评论 -
设计模式之观察者模式
观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。解决的问题:一对一或者一对多的对象交互场景。实现技术:虚函数、继承、多态、关联、聚合关系。在观察者模式结构图中包含如下几个角色: ●...原创 2022-02-07 15:33:59 · 157 阅读 · 0 评论 -
设计模式之中介者模式
中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。中介者模式是“迪米特法则”的一个典型应用。作用:将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系。实现原理:虚函数、继承、多态、关联关系。在中介者模式结构图中包含原创 2022-02-06 17:28:53 · 261 阅读 · 0 评论 -
设计模式之状态模式
状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States)。解决问题:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。在状态模式中引入了抽象状态类和具体状态类,它们是状态模式的核心。实现原理:虚函数,继承、多态,关联关系。Context(环境类):环境类又称为上下文类,它是拥有多种状态的对象。由于环境类的状态存在多样性且在不同状态下对象的行为有所不同,因此将状态原创 2022-02-06 14:30:01 · 189 阅读 · 0 评论 -
设计模式之备忘录模式
void TestMementoPattern(){ static int index = 0; //定义一个索引来记录当前状态所在位置 Caretaker *pmc = new Caretaker(); Originator *pchess = new Originator("车", 1, 1); play(pchess, pmc, index); pchess->setY(4); play(pchess, pmc, index); pchess->setX(5); pla.原创 2022-01-28 15:34:00 · 377 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。背景:聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,又是可分离的。可以将遍历数据的行为从聚合对象中分离出来,封装在一个被称之为“迭代器”的对象中,由迭代器来提供遍历聚合对象内部数据的行为。实现原理:继承、虚函数多态重写、依赖、关联关系。在迭代器模式结构图中包.原创 2022-01-27 17:37:06 · 160 阅读 · 0 评论 -
设计模式之命令模式
命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。理解思路:在调用者中,创建并注入不同的具体命令对象,从而使具体命令对象执行对应的操作,其中具体命令对象原创 2022-01-26 16:19:07 · 141 阅读 · 0 评论 -
设计模式之职责链
职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。职责链模式结构的核心在于引入了一个抽象处理者。实现原理:把职责角色分开,形成一条链,关联。 职责链模式并不创建职责链,职责链的创建工作必须由系统的其他部分来完成,一般是在使用该职责链的客户端中创建职责链。在职责链模式结构图中包含如下几个角色:...原创 2022-01-26 15:36:32 · 142 阅读 · 0 评论 -
设计模式之策略模式
策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。实现原理:虚函数、继承多态 及简单工厂模式 、单例模式,关联在策略模式结构图中包含如下几个角色: ● Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。...原创 2022-01-26 15:27:30 · 176 阅读 · 0 评论 -
设计模式之模板方法模式
模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。模板方法模式包含如下两个角色: (1) Abstract...原创 2022-01-26 15:14:39 · 135 阅读 · 0 评论 -
设计模式之享元模式
享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。基础概念:享元池:在逻辑上每一个出现的字符都有一个对象与之对应,然而在物理上它们却共享同一个享元对象,这个对象可以出现在一个字符串的不同地方,相同的字符对象都指向同一个实例,在享元模式中,存储这些共享实例对象的地方称为享元池(Flywe原创 2022-01-25 10:28:51 · 221 阅读 · 0 评论 -
设计模式之装饰模式
装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。作用:装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。实现原理:虚函数,继承多态,聚合关联关系在装饰模式结构图中包含如下几个角色:..原创 2022-01-21 17:57:47 · 100 阅读 · 0 评论 -
设计模式之组合模式
组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。使用背景:对于树形结构,使用了递归调用的机制来对整个结构进行处理。由于容器对象和叶子对象在功能上的区别。解决问题: 如果不使用组合模式,客户端代码将过多地依赖于容器对象复杂的内部实现结构,容器对象内部实现结构的变化将引起客户代码的频原创 2022-01-20 17:00:20 · 163 阅读 · 0 评论 -
设计模式之桥接模式
桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模式。将抽象部分与它原创 2022-01-20 15:21:24 · 327 阅读 · 0 评论 -
设计模式之代理模式
代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。作用:通过引入代理对象的方式来间接访问目标对象实现原理:虚函数继承多态,关联关系代理模式包含如下三个角色: (1) Subject(抽象主题角色):它声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题的地方都可以使用代理主题,客户端通常需要针对抽象主题角色进行编程。 (2) Proxy(代理主题角色):它包含了对真实主题的引用,从而可以在任何时候操作真实主题对象;在代理主...原创 2022-01-19 16:33:22 · 219 阅读 · 0 评论 -
设计模式之外观模式
外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。解决的问题避免了系统与系统之间的高耦合度 使得复杂的子系统用法变得简单实现原理:新建一个类,再使用关联关系外观模式包含如下两个角色: (1) Facade(外观角色):在客户端可以调用它的方法...原创 2022-01-19 11:21:47 · 151 阅读 · 0 评论 -
设计模式之适配器模式
适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。解决问题:原本由于接口不兼容而不能一起工作的那些类可以在一起工作。适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。因为:类适配器采用“多继承”的实现方式,带来了不良的高耦合,所以一般原创 2022-01-19 10:14:55 · 552 阅读 · 0 评论 -
设计模式之建造者模式
建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。实现原理:依赖倒置原则 ,虚函数多态、关联聚合组合关系具体见:面向对象设计原则_baidu_16370559的博客-CSDN博客作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。实现的方法:就是建抽象接口,子类具体化实现。● Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,原创 2022-01-18 16:57:41 · 154 阅读 · 0 评论 -
设计模式之原型模式
原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。即通过请求原型对象拷贝自己来实现创建过程。解决问题:避免让客户端new 出来的构造函数进行大量的初始化工作,同时能够实现深拷贝。延伸深拷贝和浅拷贝的区别:c++ 深度拷贝和浅度拷贝_baidu_16370559的博客-CSDN博客_深度拷贝c++实现原理: 抽象基类(纯虚函数),虚函数继承多态,拷贝构造函数、依赖关系 在原型模式结构图...原创 2022-01-18 15:39:36 · 122 阅读 · 0 评论 -
设计模式之抽象工厂模式
概念:抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。解决的问题:由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产。抽象工厂模式与工厂方法模式最大的区别:抽象工厂中每个工厂可以创建多种类的产品;而工厂方法每个工厂只能创建一类。主要.原创 2022-01-17 16:37:10 · 339 阅读 · 0 评论 -
设计模式之工厂模式
概念:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式。主要作用:将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化(创建)哪一个类。解决的问题:工厂一旦需要生产.原创 2022-01-17 15:29:23 · 435 阅读 · 0 评论 -
设计模式之简单工厂模式
定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。实现原理:纯虚函数,继承,多态简单工厂只有三个要素。a.工厂实现 在编程中,工厂实现决定如何实例化产品,是实现扩展的途径..原创 2022-01-14 16:55:46 · 268 阅读 · 0 评论 -
设计模式之单例模式
所有的代码是以c++为准定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。原理:使用静态变量和静态函数。静态变量介绍见c++ static静态变量_baidu_16370559的博客-CSDN博客_c++静态变量实现过程:假如TaskManager类为需要设计的类1.为了确保TaskManager实例的唯一性,我们需要禁止类的外部直接使用new来创建对象,将TaskManager的构造函数的可见性原创 2022-01-14 16:05:06 · 528 阅读 · 0 评论 -
c++ UML类图
类图类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图的3个基本组件:类名、属性、方法。类的属性语法:[可见性] 属性名 [:类型] [=初始值] [{属性字符串}]可见性:公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#”类操作的语法为:[可见性] 操作名 [(参数表)] [:返回类型] [...原创 2021-12-21 10:44:34 · 1202 阅读 · 0 评论 -
面向对象设计原则
单一职责原则:一个类只负责一个功能领域中的相应职责(对于一个类而说,只有一个引起它变化的原因)。实现高内聚,低耦合的指导方针。单一职责原则从职责(改变理由)的侧面上为我们对类(接口)的抽象的颗粒度建立了判断基准:在为系统设计类(接口)的时候应该保证它们的单一职责性。降低了类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险开闭原则:一个软件实体应当对扩展开放,对修改关闭(就是软件实体应该尽量在不修改原有代码的情况下进行扩展);软件实体可以指一个软件模块,一个由多个类..原创 2021-12-21 14:45:17 · 522 阅读 · 0 评论 -
浅谈设计模式
设计模式就是为了解决某类重复出现的问题而出现一套成功或者有效的解决方案。作用:1.以一种标准的形式工广大开发人员使用,编于学习和交流,使新的开发者更容易理解设计思路,实现可维护性。2.可重用性,可复用性,避免重复性工作。3.可扩展性,易于修改。4.提高开发效率和软件质量。uml类图...原创 2021-12-21 09:43:00 · 811 阅读 · 0 评论