大话设计模式
文章平均质量分 79
西青年
读一流的书,做一流的人。
展开
-
大话设计模式C++实现-第25章-中介者模式
一、UML二、角色三、优缺点四、C++实现原创 2015-01-06 11:59:51 · 1769 阅读 · 1 评论 -
大话设计模式C++实现-第9章-原型模式
一、UML图二、概念原型模式(Prototype):用原型示例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。三、说明(1)原型模式实际上就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。(2)一般在初始化的信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的细节,有对性能是大大的提高。因为如果不用Clone,每次new,都需要执行原创 2014-12-17 16:41:33 · 2150 阅读 · 2 评论 -
大话设计模式C++实现-第10章-模板方法模式
一、UML图二、概念模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。三、说明角色:(1)AbstractClass:是抽象类,其实也就是一个抽象模板,定义并实现了一个模板方法。这个模板方法一般是一个具体方法,它给出了一个顶级逻辑的框架,而逻辑的组成步骤在相应的抽象操作原创 2014-12-17 22:23:09 · 1998 阅读 · 0 评论 -
大话设计模式C++实现-第6章-装饰模式
一、UML图二、概念装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。三、说明角色:(1)Component是定义一个对象,可以给这些对象动态地添加职责。(2)ConcreteComponent是定义了一个具体的对象,也可以给这个对象增加一些职责。(3)Decorator,装饰抽象类,继承了Component,从外类来扩展原创 2014-12-11 15:16:06 · 2707 阅读 · 1 评论 -
大话设计模式C++实现-第12章-外观模式
一、UML图二、概念外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。三、说明Q:外观模式在什么时候使用呢?A:分为三个阶段:(1)首先,在设计初期阶段,应该要有意识的将不同的两个层分离。(2)第二,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,大多数的模式使用时也会产生很原创 2014-12-17 23:06:55 · 1783 阅读 · 1 评论 -
大话设计模式C++实现-第13章-建造者模式
一、UML图二、概念建造者模式(Builder):将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。三、说明角色:(1)Builder:是为创建一个Product对象的各个部件指定的抽象接口。(2)ConcreteBuilder:是具体创建者,实现Builder接口,构造和装配各个部件。(3)Product:具体的产品角色原创 2014-12-18 15:15:10 · 1586 阅读 · 2 评论 -
大话设计模式C++实现-第14章-观察者模式
一、UML图二、概念观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。三、说明角色:(1)Subject类:可以翻译为主题或者抽象通知者,一般用一个抽象类或者一个接口实现。他把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接原创 2014-12-21 11:59:18 · 2007 阅读 · 0 评论 -
大话设计模式C++实现-第17章-适配器模式
一、UML图二、概念适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。三、说明(1)在想使用一个已存在的类,但是如果他的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式。(2)用了适配器模式,客户代码可以统一调用统一接口就行了,这样可以更简单,更直接,更紧凑。原创 2014-12-21 17:34:39 · 1629 阅读 · 0 评论 -
大话设计模式C++实现-第21章-单例模式
一、UML图二、概念单例模式:保证一个类仅有一个实例,并提供一个访问他的全局访问点。[DP]通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保护它的唯一实例。这个类可以保证没有其他实例可以被创建,并且他可以提供一个访问该实例的方法。三、注意:使用单例模式,只能保证一个线程内对象不会被多次创建,而不不能保证多线程原创 2014-12-09 23:21:36 · 2055 阅读 · 0 评论 -
大话设计模式C++实现-第24章-职责链模式
一、UML图二、概念三、说明 四、C++实现(1)ChainOfResponsibility.h(2)Client.cpp(3)运行截图原创 2014-12-25 22:47:41 · 1380 阅读 · 2 评论 -
大话设计模式C++实现-第26章-享元模式
一、UML图二、概念享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。三、说明角色:(1)Flyweight类:它是所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态。(2)ConcreteFlyweight类:继承Flyweight超类或实现Flyweight接口,并为内部状态增加存储空间。原创 2014-12-28 15:47:45 · 1501 阅读 · 0 评论 -
大话设计模式C++实现-第19章-组合模式
一、UML图二、概念组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。三、说明角色:(1)Component:为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component 的子部件。(2)Leaf:在组合中白哦是原创 2014-12-22 16:24:20 · 1700 阅读 · 0 评论 -
大话设计模式C++实现-第18章-备忘录模式
一、UML图二、概念备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。三、说明角色:(1)Originator(发起人):负责创建一个Memento,用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储原创 2014-12-21 23:00:08 · 1542 阅读 · 0 评论 -
大话设计模式C++实现-第7章-代理模式
一、UML图二、概念代理模式:为其他对象提供一种代理以控制对这个对象的访问。三、应用场景(1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。(2)虚拟代理,是根据需要创建开销很大的对象。通过他来存放实例化需要很长时间的真实对象。例如:图片加载的时候。(3)安全代理,用来控制真是对象访问时的权限。(4)智能指原创 2014-12-16 22:58:47 · 2559 阅读 · 1 评论 -
大话设计模式C++实现-第20章-迭代器模式
一、UML图二、概念 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。三、说明什么时候用?(1)当你需要访问一个聚集对象,而且不管这些对象时什么都需要遍历的时候,你就应该考虑用迭代器模式。(2)你需要对聚集有多种遍历时,可以考虑用迭代器模式。(3)为遍历不同的聚集结构提供如开始、下一个、是否原创 2014-12-23 08:56:22 · 1996 阅读 · 0 评论 -
大话设计模式C++实现-第22章-桥接模式
一、UML图二、概念桥接模式(Bridge):将抽象部分与它的实现部分分离,使他们都可以独立地变化。三、说明为什么叫“桥接模式”?如上所示的UML图中,有一个聚合线,像一座桥,所以叫“桥接模式”。概念解释:什么叫抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,因为这没有任何意义。实现指的是抽象类与它的派生类用来实现自己的对象。原创 2014-12-23 11:42:03 · 1603 阅读 · 0 评论 -
大话设计模式C++实现-第23章-命令模式
一、UML图二、概念命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求进行排队或记录请求日志,以及支持可撤销的操作。三、说明角色:(1)Command类:用来声明执行操作的接口。(2)ConcreteCommand类:将一个接收者对象绑定与一个动作,调用接收者相应的操作,以实现Excute。(3)原创 2014-12-23 19:02:00 · 1464 阅读 · 0 评论 -
大话设计模式C++实现-第3.4.5.11.22.23章-设计原则
一、单一职责原则(1)就一个类而言,应该仅有一个引起它变化的原因;(2)如果一个类承担的职责过多,就等于把这些职责耦合在了一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力二、开放封闭原则三、依赖倒转原则四、里氏代换原则五、迪米特法则原创 2014-12-10 17:03:35 · 1919 阅读 · 0 评论 -
大话设计模式C++实现-第27章-解释器模式
一、UML图二、概念三、说明四、C++实现(1)Expression.h#ifndef FLYWEIGHT_H#define FLYWEIGHT_H#include #include #include #include //Context,此处为演奏内容类class PlayContext{private: std::string原创 2014-12-29 17:58:22 · 1726 阅读 · 1 评论 -
大话设计模式C++实现-第28章-访问者模式
一、UML图二、概念访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作。它是你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。三、说明(1)访问者模式适用于数据结构相对稳定的系统?是的。它把数据结构和作用于数据结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。(2)访问者模式的目的?访问者模式的目的是要把原创 2014-12-31 16:34:20 · 1546 阅读 · 1 评论 -
大话设计模式C++实现-第8章-工厂方法模式
一、UML图二、包含的角色(1)抽象工厂(2)具体工厂(3)抽象产品(4)具体产品三、优势(1)工厂方法模式是对简单工厂模式的稍微的改进。工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子类中。(2)与简单工厂模式相比,制造产品的工厂类不再 只有一个,而是每种具体产品类都对应一个生产它的具体工厂类。而这些具体工厂类的共同特征再被提取出原创 2014-11-09 22:26:52 · 3049 阅读 · 0 评论 -
大话设计模式C++实现-第15章-抽象工厂模式
一、UML图二、包含的角色(1)抽象工厂(2)具体工厂:包括具体工厂1和具体工厂2。具体工厂1用于生产具体产品A1和具体产品B1,具体工厂2用于生产具体产品A2和具体产品B2;(3)抽象产品:包括抽象产品A和抽象产品B;(4)具体产品:包括抽象产品A所对应的具体产品A1和A2,以及抽象产品B所对应的具体产品B1和B2.说明:在《大话设计模式》中,上述的1和2分别代表原创 2014-11-16 23:09:39 · 3118 阅读 · 2 评论 -
大话设计模式C++实现-第16章-状态模式
一、UML图二、概述下面是来自书本和网络的对状态模式的定义和分析:(1)状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。看起来,状态模式好像是神通广大很厉害似的——居然能够“修改自身的类”!(2)适用场景:a)状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复原创 2014-11-18 09:59:09 · 1995 阅读 · 1 评论 -
大话设计模式C++实现-第2章-策略模式
一、UML图二、概述策略模式:他定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。三、优点(1)策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。(2)策略模式的Strategy类曾是为Context原创 2014-12-10 23:29:54 · 3087 阅读 · 2 评论 -
大话设计模式C++实现-第1章-简单工厂模式
一、UML图二、包含的角色简单工厂模式包含三个角色:(1)工厂类Factory(2)抽象产品类AbstractProduct(3)具体产品类ConcreteProduct。(1)Factory:工厂类是用来制造产品的。因此,在Factory中有一个用于制造产品的Create函数或者Generate函数之类的函数。这个函数能够根据“标识符”的不同生成不同的ConcreteProd原创 2014-11-09 15:09:13 · 5230 阅读 · 7 评论