![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
W油爆枇杷
这个作者很懒,什么都没留下…
展开
-
设计模式----解释器模式
解释器模式给定一个语言后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来 解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后,使用模式设计解释这些语句。在解释器模式里面提到的语言是指任 何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构,也就是一系列的组合规则。每一个命令对象 都有一个解释方法,代表对命...原创 2019-12-02 20:32:19 · 147 阅读 · 0 评论 -
设计模式----迭代器模式
迭代器模式迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集, 聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集 的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色 变化。我爱上了Mary,不...原创 2019-12-02 20:27:54 · 132 阅读 · 0 评论 -
设计模式----备忘录模式
备忘录模式备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一 个对象的状态捉住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。同时跟几个MM聊天时,一定要记清楚刚才跟MM说了些什么话,不然...原创 2019-12-02 20:18:42 · 119 阅读 · 0 评论 -
设计模式----中介者模式
中介者模式调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些 对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用 转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。假设现在科技发达之后,家里所有设备都是智...原创 2019-12-02 20:16:01 · 131 阅读 · 0 评论 -
设计模式----访问者模式
访问者模式访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数 据结构可以保持不变。访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可 以相对自由的演化。访问者模式使得增加新的操作变的很容易,就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象 中,而不是分散到一个个的节...原创 2019-12-02 19:44:17 · 131 阅读 · 0 评论 -
设计模式----命令模式
命令模式命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的 对象。命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以 及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。一个对象调用另一个对象的一般过程:创建目标对象的实例设置调用参数调用目标对象的...原创 2019-12-02 19:39:40 · 362 阅读 · 0 评论 -
设计模式----责任链模式
责任链模式在责任链模式中,很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请 求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终 不被任何接收端对象所接受。晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个...原创 2019-12-02 16:42:38 · 137 阅读 · 0 评论 -
设计模式----策略模式
策略模式策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得 算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供 。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。跟不同类型的MM约会,要用不同的策略,有的请电影比较好,有的则去吃小吃效果不错,有的...原创 2019-12-02 16:16:42 · 128 阅读 · 0 评论 -
设计模式----状态模式
状态模式类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。跟MM交往时,一定要注意她的状态哦,在不同的状态时她的行为会有不同,比如你约她今天晚上去看电影,对你没兴趣的 MM就会说“有事情啦”,对你不讨厌但还没喜欢上的MM就会说“好啊,不过可以带上我同事么?”,已经喜欢上你的MM就会...原创 2019-12-02 15:49:44 · 156 阅读 · 0 评论 -
设计模式----观察者模式
观察者模式观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生 变化时,会通知所有观察者对象,使他们能够自动更新自己。想知道咱们公司最新MM情报吗?加入公司的MM情报邮件组就行了,tom负责搜集情报,他发现的新情报不用一个一个通知 我们,直接发布给邮件组,我们作为订阅者(观察者)就可以及时收到情报啦。#include <iostream...原创 2019-12-02 14:56:40 · 128 阅读 · 0 评论 -
设计模式----模板方法模式
模板方法模式某一项任务有稳定的整体操作结构,但是各个子结构却有很多需要改变的需求,如何在确定稳定操作的结构的前提下灵活的应对各个子步骤的变化或者晚期实现需求。将一些步骤延迟到子类,模板方法模式使得子类可以服用一个算法结构,可重定义,支持子类的变化。如果算法的骨架不稳定这个模板方法就不适用。不要调用我 让我来调用你。模板方法模式准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然...原创 2019-12-02 14:19:03 · 580 阅读 · 0 评论 -
设计模式----享元模式
享元模式为了避免产生过多的临时对象,创建一个对象,需要不同对象的时候设置不同的参数。享元就是共享元素,以共享的方式来避免大量拥有相同内容对象的开销。对于经常使用且仅参数不同的对象,不是每次都重新创建一个不同的对象,而是创建一个对象之后,每次使用时传入不同的参数。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关 键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部,不会随环...原创 2019-12-02 14:07:29 · 128 阅读 · 0 评论 -
设计模式----组合模式
组合模式合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。Mary今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去商店,你自己挑。”“这件T恤挺漂亮,买,这 条裙子好看,买,这个包也不错,买。”“喂,买了三件了呀,我...原创 2019-12-01 19:46:02 · 130 阅读 · 0 评论 -
设计模式----桥接模式
桥接模式桥接模式是为了解决类与类之间多对多的关系,使类与类直接的组合更加灵活。Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。例如:早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣...原创 2019-12-01 16:50:13 · 215 阅读 · 0 评论 -
设计模式----装饰模式
装饰模式在不改变原有的类的情况下,给它添加功能。对现有的类对象进行包裹和封装,以期望在不改变类对象及其类定义的情况下,为对象添加额外功能。是一种对象结构型模式。需要注意的是,该过程是通过调用被包裹之后的对象完成功能添加的,而不是直接修改现有对象的行为,相当于增加了中间层。Mary过完轮到Sarly过生日,还是不要叫她自己挑了,不然这个月伙食费肯定玩完,拿出我去年在华山顶上照的照片,在背面写上“...原创 2019-12-01 16:12:34 · 114 阅读 · 0 评论 -
设计模式----代理模式
代理模式代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个 人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户 端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不 能够创建被代理对象,被代理...原创 2019-12-01 15:57:00 · 98 阅读 · 0 评论 -
设计模式----适配器模式
适配器模式适配器模式目的为了向客户提供他们所需要的接口,在适配器内部再调用我们自己已经实现的接口。在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配。例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访问照相机的 SD 内存卡时需要一个读卡器等。在软件设计中也可能出现:需要开发的具有某种业务功能的组...原创 2019-12-01 15:20:29 · 218 阅读 · 0 评论 -
设计模式----外观模式
外观模式为各个不同的类提供统一的接口,然后通过外观模式将其组合起来,对外提供一个统一的接口。将子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。相当于存在一种委托的关系。**例如:**现在有一个相机,想要拍出漂亮的照片,就需要自己手动调节光圈、快门,但是如果想要方便简单,就需要外观模式,照相机变成自动挡,只需要自己对准目标按下快门,所有需要手...原创 2019-12-01 14:31:34 · 138 阅读 · 0 评论 -
设计模式----单例模式
单例模式单例模式就是让一个类智能创建一个对象。单例模式分为两种:懒汉式和饿汉式。但是懒汉式存在着线程安全的问题。需要对线程进行加锁操作。条件:构造,拷贝和析构函数都是private,所以,无法通过声明对象来构造需要用静态成员变量来控制对象的个数,以保证不重复定义需要有静态的“构造”函数和“析构”函数#include <iostream>using namespace ...原创 2019-11-28 21:28:24 · 119 阅读 · 0 评论 -
设计模式----原型模式
原型模式对象的构造使用clone成员函数,而不是对象的构造函数。这样的好处在于:clone函数可以被定义为虚函数,而构造函数不可以。Prototype方法不限制接口的数量。但是对于每个派生关系,基类和派生类都要包含clone函数。clone函数在基类中定义为纯虚函数,具体的clone函数留在派生类里实现。另外定义一个director类,这个类负责接收具体类型信息,然后根据信息生成相应的对象。在使...原创 2019-11-28 19:32:56 · 130 阅读 · 0 评论 -
设计模式----创造者模式
创造者模式把建造不同类型房子的过程与客户端调用分类,将一个复杂对象的构造与它的表示分离。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。创造者模中存在几个角色:建造者(Builder):为创建一个产品对象的各个部件指定抽象接口。具体建造者(ConcreteBuilder):实现Builder的接口以构造和装配该产...原创 2019-11-28 19:08:31 · 413 阅读 · 0 评论 -
设计模式----工厂模式
简单工厂模式又叫做静态工厂方法模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。但是这存在一个问题就是不符合开闭原则。假设有一个动物类接口,分别实现狗、猫、鸭子的子类,通过一个简单工厂的类,包含创建动物的方法,使用判断选择创建的对象。#include <iostream>#include <cstring>using namespace std;...原创 2019-11-28 16:23:47 · 165 阅读 · 0 评论 -
设计模式----原则
设计模式原则开闭原则对扩展开放,对修改关闭。当需求发生变化时,我们可以通过添加新模块来满足新需求,而不是通过修改原来的实现代码来满足新需求;开放封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现的频繁变化的那些部分作出抽象,然而,对于应用程序中的每个部分都刻意的进行抽象同样不是一个好主意。拒绝...原创 2019-11-28 14:33:16 · 151 阅读 · 0 评论