设计模式
文章平均质量分 91
second60
这个作者很懒,什么都没留下…
展开
-
[设计模式]结构模式-装饰器模式(C++描述)
[设计模式]结构模式-装饰器模式(C++描述)second60 201804291. 什么是装饰器当我们为一个现有类A添加新的职责时,我们可能会定义新类B继承现有类,再添加新的操作。但是通过继承会使问题变得越来越复杂,如果类B又有新操作时,是否又在定义个类C来继承B呢?这样加深了继承的复杂度和深度,代码也越来越难维护。 装饰器就是为了解决新加类职责,继承实现的弊端,而是通过组合来实现。 2. 装饰...原创 2018-05-01 11:13:24 · 460 阅读 · 0 评论 -
[设计模式]结构模式-桥接模式(C++描述)
[设计模式]结构模式-桥接模式(C++描述)second60 201804281. 什么是结构模式设计模式中有三种模式,分别是:创建型模式,结构型模式,行为模式。 1.1三种模式的区别创建型模式:创建对象的模式,抽象了实例化的过程。结构型模式:解决怎么组装现有的类,设计他们的交互,从而达到实现一定的功能。行为模式:描述了对象和类的模式,以及它们间的通信模式。 1.2 结构模式从上面的概念,可以知道...原创 2018-04-28 23:46:01 · 285 阅读 · 0 评论 -
[设计模式]结构模式-适配模式(C++描述)
[设计模式]结构模式-适配模式(C++描述)second60 201804291. 什么是适配模式在现有接口中,不修改原有接口的情况下,增加适配器,支持客户的需求。适配器分为:类适配器模式和对象适配器模式。 现实生活中最简单的例子:手机能电器,我们家用电压为220V(Adaptee),但我们的手机只需12V的电压(Target)来充电。所以中间需要一个电压适配器(Adapter)来转换电压。 概念...原创 2018-04-29 21:05:10 · 167 阅读 · 0 评论 -
[设计模式]行为模式-观察者(C++描述)
[设计模式]行为模式-观察者(C++描述)second60 201805141. 什么是观察者模式打个比方,一个表演者在台上表演,台下有很多观众在观看。当台上的表演者,每做一个动作,台下的观众都可以看到。这里的观众就是观察者。 定义对象间一对多的依赖,当(表演者)一个对象状态改变时,所有依赖它的对象(观众)都得到通知并更新。 观察都模式解决的问题:建立一个Subect对多个Observer的依赖...原创 2018-05-14 17:15:23 · 165 阅读 · 0 评论 -
[设计模式]行为模式-策略模式(C++描述)
[设计模式]行为模式-策略模式(C++描述)second60 201805071. 什么是策略模式回顾下上节,模板方法是把业务逻辑的具体实现和抽象接口之间解耦,是通过子类继承父类的方法来实现,并把算法的流程封装到抽象类中。所以这样就导致了模板方法继承的强约束性,即如查新加一个流程,必须修改抽象接口,同时在子类中添加实现方法。改动非常大。 策略模式,是采用组合的方式实现了模板方法的功能,即具体实现...原创 2018-05-08 10:14:09 · 121 阅读 · 0 评论 -
[设计模式]行为模式-备忘录(C++描述)
[设计模式]行为模式-备忘录(C++描述)second60 201805151. 备忘录定义官方定义:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。也可以将对象恢复到原先保存的状态。也称快照模式。 2. 备忘录结构图 分析:1. Originator: 发起人记录当前时刻的内部状态,负责创建和恢复备忘录数据。2. Menento: 备忘录,负责存储发起人对象内部状态3...原创 2018-05-15 14:42:05 · 216 阅读 · 0 评论 -
[设计模式]行为模式-访问者(C++描述)
[设计模式]行为模式-访问者(C++描述)second60 201806031. 访问者模式定义访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 将数据结构和数据操作分离的设计模式。2. 访问者模式结构图 分析:Vistor抽象访问者角色:为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识请求给具体访问者...原创 2018-06-04 06:13:36 · 239 阅读 · 0 评论 -
[设计模式]行为模式-责任链(C++描述)
[设计模式]行为模式-责任链(C++描述)second60 201806051. 责任链模式定义在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 即可能处理一个请求的对象链接成一个链,并将请求在...原创 2018-06-05 07:34:32 · 238 阅读 · 0 评论 -
[设计模式]行为模式-迭代器(C++描述)
[设计模式]行为模式-迭代器(C++描述)second60 201806051. 迭代器模式定义迭代器,作为学C++的人,应该都接触过迭代器。在STL的每个容器中,都会对应有个迭代器。迭代器的目的很简单,就是用来遍历用的。 定义:顺序访问集合对象的元素,不需要知道集合对象的底层表示。2. 迭代器模式结构图 分析:1. 聚合类父类Aggregate:也可以说是容器类父类,里面存放的是某种结构的容器...原创 2018-06-06 23:50:54 · 161 阅读 · 0 评论 -
[设计模式]行为模式-中介者(C++描述)
[设计模式]行为模式-中介者(C++描述)second60 201805311. 中介者定义中介者模式提供对象间的交互和通讯封装在一个类中,各个对象间的通信不必显势去声明和引用,大大降低了系统的复杂性。 在面向对象的软件设计与开发过程中,根据单一职责原则,尽量将对象细化,使其只负责或呈现单一的职责,将行为分布到各个对象中。 对于一个模块或系统,可能由很多对象构成,而且这些对象之间存在相互的引用,...原创 2018-05-31 10:11:29 · 507 阅读 · 0 评论 -
[设计模式]行为模式-命令模式(C++描述)
[设计模式]行为模式-命令模式(C++描述)second60 201806011. 命令模式定义命令模式通过将请求封装到一个commond对象中,并将请求的接受者存放到receiver中, 从而实现调用操作的对象和操作的具体实现者之间的解耦。 命令模式又称为动作模式或事务模式。 通常情况下,消息封装好后直接调用处理接口,这是直接调用。而命令模式把消息封装和消息调用两者分离,两者之间不用关心对方,...原创 2018-06-01 14:56:03 · 242 阅读 · 0 评论 -
[设计模式]行为模式-模板方法(C++描述)
[设计模式]行为模式-模板方法(C++描述)second60 201805041. 什么是模板方法定义一个操作中算法的骨架,而将一些步骤延迟到子类中实现,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 简单地说:完成一件事情,有些步骤相同,有些步骤不相同,在父类中定义模板方法,写好具体流程,但具体的实现是在子类中。 2. 模板方法结构图 分析:模板方法类:实现了模板方法,...原创 2018-05-05 00:23:19 · 219 阅读 · 0 评论 -
[设计模式]创建模式-原型模型(C++描述)
[设计模式]创建模式-原型模型(C++描述)second60 201804271. 什么是原型模式原型模式,就是通过自身复制出新的对象。是创建者中最简单的模式之一。 在C++中,是通过拷贝构造函数来实现,涉及到C++对象拷贝的浅拷贝的深拷贝的问题。 2. 原型模型结构图模式分析:1. 有一个抽象类,抽象类中提供clone方法2. 子类继继抽象父类,实现clone方法3. clone方法是通过拷贝构...原创 2018-04-27 02:15:32 · 635 阅读 · 0 评论 -
[设计模式]行为模式-状态模式(C++描述)
[设计模式]行为模式-状态模式(C++描述)second60 201805091. 什么是状态模式对于一些人或事特,会有不同状态,而一个状态会在不同的表现下转移到下一个状态。通常情况下,我们可能写个if..else语句进行判断,或switch语句进行判断,但是当状态越来越多时,代码将变得不可维护,可读性和扩展性变得很差。同时,状态逻辑和动作逻辑没有分离。而状态模式正是解决这样的问题。状态模式,使...原创 2018-05-09 01:58:54 · 285 阅读 · 0 评论 -
[设计模式]简介(C++描述)
[设计模式]简介(C++描述)second60 201804241. 背景设计模式,在面向对象设计语言中,是非常重要的思想。无论是架构设计,还是在平常的功能开发,用了设计模式,会如虎添冀。如扩展性方面,一些设计模式,新加一个类继承原有父类,即可不修改代码的情况,支持了新的功能。 下面,我会归纳总结下23种设计模式,网上也有很多例子,尽量简单地讲解,同时会结合我以前工作的一些运用场景或仿造的一些场景...原创 2018-04-24 22:30:48 · 211 阅读 · 0 评论 -
[设计模式]创建模式-工厂模式(C++描述)
[设计模式]创建模式-工厂模式(C++描述)second60 201804241. 什么是创建者模式创建模式是设计模式中三类之一,主要是为了对象的创建而产生的一系列设计模式。包括:a) Factory Pattern: 工厂模式b) AbstartFactory: 抽象工厂c) Singleton:单例d) Builder:创建者e) Prototype:原型模式 这五类创建者模式都很常用,至少在...原创 2018-04-25 00:07:40 · 284 阅读 · 0 评论 -
[设计模式]创建模式-抽象工厂(C++描述)
[设计模式]创建模式-抽象工厂(C++描述)second60 201804251. 抽象工厂在我理解,抽象工厂其实是工厂模式的升级版,不同之处是:工厂模式是对一类对象的创建,而抽象工厂是对多类对象的创建。2. 抽象工厂和工厂模式的区别工厂模版只是处理一类对象创建抽象工厂能对多类对象的创建3. 抽象工厂的类图 图中可以看出,相比升级版权的工厂模式,此模式多了,不同的抽象产品,工厂即可以创建Absta...原创 2018-04-25 01:39:16 · 250 阅读 · 0 评论 -
[设计模式]结构模式-组合模式(C++描述)
[设计模式]结构模式-组合模式(C++描述)second60 201805021. 组合模式组合模式,将对象组合成树形结构以表示”部份”和”整体”的层次的结构。也叫“整体-部份“模式。组合模式使得用户对单个对象和组合对象的使用具有一致性。 部分 --- 整体 1.1优点1. 解耦了客户程序与复杂元素内部结构2. 让客户端像修改配置文件一样简单来完成本来需要流程控制语句来完成的功能。 1.2场景1...原创 2018-05-02 23:43:28 · 138 阅读 · 0 评论 -
[设计模式]结构模式-轻量级模式(C++描述)
[设计模式]结构模式-轻量级模式(C++描述)second60 20180502 1. 什么是轻量级模式通常情况下,一个系统有很多细粒度对象,造成了很大的存储开销。 轻量级模式,又称享元模式,运用共享技术有效地支持大量细粒度对象的复用。即系统只使用少量的对象,这些对象很相似,状态变化很小,可以实现对象的多次复用。轻量级模式共享的关键是区分了内部状态和外部状态。概念内部状态:存储有享元对象内部并且不...原创 2018-05-03 00:37:47 · 360 阅读 · 0 评论 -
[设计模式]创建模式-单例(C++描述)
[设计模式]创建模式-单例(C++描述)second60 20180425单例是23种设计模式中最常用的,没有之一。 1. 什么是单例?一句话,单例就是一个全局变量(对象)。在整个程序生命周期,只有一个实例。单例的实现很简单。 2. 单例结构图 3. 简单单例在C++中,用static 函数和static变量来实现或用模来来继承。 3.1代码一(static 成员变量版)class Singlet...原创 2018-04-25 21:34:00 · 148 阅读 · 0 评论 -
[设计模式]结构模式-外观模式(C++描述)
[设计模式]结构模式-外观模式(C++描述)1. 什么是外观模式外观模式为子系统中的各类提供了一个统一简明的外观,隐藏了子系统的复杂性,使子系统更加容易使用。 简单地说:把多个类进行统一,组合成新接口,供上层使用。如:A类,B类,C类,对于客户来说,并不需要知道他们在哪,客户只需知道新类D,通过D能调用到A,B,C类的功能。 在实际开发中,外观模式运用非常广泛。 2. 外观模式结构图 分析:子系...原创 2018-05-04 00:14:52 · 214 阅读 · 0 评论 -
[设计模式]结构模式-代理模式(C++描述)
[设计模式]结构模式-代理模式(C++描述)second60 201805041. 什么是代理模式代理模式,从字面上就可以这样理解,我想做某件事,但我不是直接找做事的人,而是找代理,代理再帮我找人做。 代理模式:为其他对象提供一种代理以控制对这个对象的访部。 2. 代理模式结构图 分析:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象类,是真实角色的代理真实角色:实现抽象...原创 2018-05-04 00:45:29 · 133 阅读 · 0 评论 -
[设计模式]创建模式-建造者(C++描述)
[设计模式]创建模式-建造者(C++描述)second60 201804261. 什么是建造者模式 当创建的对象很复杂,由多个其他对象组合而成时,我们要对复杂的对象的创建过程进行分离,通过一步一步来对复杂对象的构建,每一步构造过程可以引入参数,使得相同步骤创建最后得到不同的对象。 一句话总结:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 作用:在用户不知道对象的建造过程...原创 2018-04-27 01:26:14 · 349 阅读 · 0 评论 -
[设计模式]行为模式-解释器(C++描述)
[设计模式]行为模式-解释器(C++描述)second60 201806081. 解释器模式定义给定一个语言,定义它的文法的一种表示,并定义一个解释器来解释语言中的句子。2. 解释器模式结构图 分析:1. 抽象表达式AbstractExpression: 声明一个所有具体表达式的抽象类,有个抽象方解释方法interpret().2. TerminalExpression终结符表达式:实现了抽象...原创 2018-06-09 00:47:06 · 231 阅读 · 0 评论