
设计模式(C++实现)
aftoy
这个作者很懒,什么都没留下…
展开
-
设计模式学习(三):策略模式
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。下面的例子以排序算法为例子○下面的一种方式是通过,new 出一种具体算法,并传递指针参数(或引用参数,前面有一篇文章中已实现)的一种实现方式#include <iostream>using namespace std;class SortAlgorithm{ //抽象排序算法类原创 2015-04-01 22:59:44 · 271 阅读 · 0 评论 -
设计模式学习(十四):备忘录模式
备忘录模式(Memento Pattern)又叫做快照模式(Snapshot Pattern)或Token模式,是GoF的23种设计模式之一,属于行为模式。定义(源于GoF《设计模式》):在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。代码#include <iostream>#include <vector>using n原创 2015-04-08 21:35:59 · 291 阅读 · 0 评论 -
设计模式学习(十三):装饰模式
在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。代码#include <iostream>#include <string>using namespace std;class building{public: virtual void show(){}};class gymBuilding:public buil原创 2015-04-08 20:42:13 · 278 阅读 · 0 评论 -
设计模式学习(十六):职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。代码#include <iostream>#include <string>using namespace std;class Boss{protected: string name; Boss *boss;public:原创 2015-04-12 15:57:02 · 281 阅读 · 0 评论 -
设计模式学习(十五):中介者模式
用一个中介对象来封装一系列的对象交互。中介使各个对象不需要显示地互相调用,从而使耦合松散,而且可以独立地改变它们之间的交互。代码#include <iostream>#include <string>using namespace std;class Mediator;class Person{ //抽象人public: virtual void setMediator(Mediat原创 2015-04-12 15:05:11 · 343 阅读 · 0 评论 -
设计模式学习(十七):观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。代码#include <iostream>#include <list>using namespace std;class Observer { //public: virtual void sensorChanger(int state) = 0;};class Sensor{原创 2015-04-12 17:00:10 · 240 阅读 · 0 评论 -
设计模式学习(十八):状态模式
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。代码#include <iostream>using namespace std;class Light;class State{ //状态public: virtual原创 2015-04-12 17:45:34 · 271 阅读 · 0 评论 -
设计模式学习(二):工厂模式
工厂模式主要有三种类型: · 简单工厂 · 工厂方法 · 抽象工厂简单工厂原创 2015-04-01 21:26:27 · 342 阅读 · 0 评论 -
设计模式学习(四):适配器模式
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。下面的例子是从网上找的设计模式C++实现(3)——适配器模式#include <iostream>using namespace std;class Sequence{ //targetpublic:原创 2015-04-01 23:27:49 · 284 阅读 · 0 评论 -
设计模式学习(十二):桥接模式
【GOF95】在提出桥梁模式的时候指出,桥梁模式的用意是”将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。这句话有三个关键词,也就是抽象化、实现化和脱耦。下面的例子用的是汽车安装座椅的例子。#include <iostream>using namespace std;class Seat{ //座位public: virtual原创 2015-04-03 21:22:25 · 323 阅读 · 0 评论 -
设计模式学习(十一):享元模式
享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。代码#include <iostream>#include <string>#includ原创 2015-04-02 23:04:49 · 248 阅读 · 0 评论 -
设计模式学习(十):代理模式
组成:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。代码#include <iostream>using namespace std;class Game{public: virtual voi原创 2015-04-02 22:22:40 · 314 阅读 · 0 评论 -
设计模式学习(七):建造者模式
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。 代码#include <iostream>using namespace std;class Product{ //最终产品public: void show(){cout<<"a:"<<a<<" b:"<<b<<" c:"<<c<<endl;} void setPartA原创 2015-04-02 21:01:25 · 230 阅读 · 0 评论 -
设计模式学习(九):组合模式
有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。这个例子是最常见的UI元素。比如,一个Panel可以包括button 和eidtview等等,其实这3个元素都是一个View代码#include <iostream>#include <vector>using namespa原创 2015-04-02 22:02:39 · 396 阅读 · 0 评论 -
设计模式学习(六):模版模式
又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。下面的例子是一个去银行办业务的例子,去银行要完成 1、等号 2、办业务,可以是取款,存款,转账 3、评价代码#include <iostream>using namespace std;class Bank{public: void原创 2015-04-02 20:25:58 · 302 阅读 · 0 评论 -
设计模式学习(五):原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。代码#include <iostream>#include <string原创 2015-04-02 20:01:40 · 403 阅读 · 0 评论 -
设计模式学习(八):外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。这是从网上找的一个例子代码#include <iostream>using namespace std;class Scanner{public: void scan(){cout<<"scan"<<endl;}};class Parser{public:原创 2015-04-02 21:15:46 · 324 阅读 · 0 评论 -
设计模式学习(一):单例模式
最近,在学习设计模式,由于比较熟悉C++,所以,都是用C++实现的。 由于没看过《设计模式》之类的书,都是从网上搜的资料,看的代码,看完之后,自己又重新实现了一遍。由于是干androd的,所以这个单例模式是参考的android实现的. 位置:android4.4.2\442\system\core\include\utils\Singleton.h android4.4.2\442\frame原创 2015-04-01 21:11:34 · 369 阅读 · 0 评论