- 博客(25)
- 收藏
- 关注
转载 设计模式(二十一)中介者模式
(二十一)中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。优点:第一,mediator的出现减少了各个colleague的耦合,使得可以独立地改变和复用各个colleague类和mediator。第二,由于把对象如何协作进行了抽象,将中介作为一个独立的概念并将其封装在一个对象中,这样关注的对象就
2016-05-03 13:53:22
271
转载 设计模式(二十)职责链模式
(二十)职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。#include #include #include using namespace std;//请求class Request{private: int m_nNumber; string name;
2016-05-02 20:31:18
200
转载 设计模式(十九)命令模式
(十九)命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。优点:第一,能较容易地设计一个命令队列;第二,在需要的情况下,可以较容易地将命令记入日志;第三,允许接受请求的一方决定是否要否决请求;第四,可以容易地实现对请求的撤销和重做;第五,由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很
2016-05-02 13:52:34
295
转载 设计模式(十八)桥接模式
(十八)桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。#include #include //#include using namespace std;//手机软件class HandsetSoft{public: virtual void Run()=0;};//游戏软件class HandsetGame : public Handset
2016-05-02 13:09:44
232
转载 设计模式(十七)单例模式
(十七)单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量时的一个对象被访问,但它不能防止你实例多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且他可以提供一个访问该实例的方法。#include #include #include using namespace std;clas
2016-05-02 11:55:05
245
转载 设计模式(十六)迭代器模式
(十六)迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。为遍历不同的聚集结构提供如开始,下一个,是否结束,当前一项等统一接口。
2016-05-02 11:54:15
223
转载 设计模式(十五)组合模式
(十五)组合模式将对象组合成树形结构以表示'部分-整体'的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑组合模式了。#include #include #include using namespace std;cla
2016-05-02 10:43:45
181
转载 设计模式(十四)备忘录模式
(十四)备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,发起人可以根据保存的备忘录信息还原到前一状态。#include #include using namespace std
2016-05-01 16:16:16
289
转载 设计模式(十三)适配器模式
(十三)适配器模式将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,但接口不符时,我们应该考虑适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。#include using namespace std;cla
2016-05-01 08:47:38
173
转载 设计模式(十二)状态模式
(十二)状态模式当一个对象的内在状态改变时允许改变其行为,这个对象看十来是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。好处:将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。#include using namespace std;
2016-05-01 08:44:49
209
转载 设计模式(十)观察者模式
(十)观察者模式又叫做发布订阅模式。定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,是他们能够自动更新自己。将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展、重用带来不便。而观察者模式的关键对象是主题和观察者,一个主题
2016-04-30 10:16:00
185
转载 设计模式(九)建造者模式
(八)建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。示例一:#include #include #include using namespace std;class Person{public: virtual void CreateHead()=0; virtual void CreateHand()=0; v
2016-04-29 13:44:43
177
转载 设计模式(八)外观模式
(七)外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。#includeusing namespace std;//(七)外观模式//为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。class SubSysOne{public: voi
2016-04-29 13:22:08
196
转载 设计模式(六)原型模式
(六)原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。一般在初始化的信息不发生变化的情况下,克隆是最好的办法。这既隐藏了对象创建的细节,又对性能是大大的提高。不用重新初始化对象,而是动态地获得对象运行时的状态。浅复制:被复制对象的所有变量都含有与原来的对象相同的值
2016-04-28 10:50:26
269
转载 设计模式(五)工厂模式
(五)工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟其子类。简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,取出来与具体产品的依赖。工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端
2016-04-28 10:07:07
202
转载 设计模式(四)代理模式
(四)代理模式为其他对象提供一种代理以控制对这个对象的访问。GOOD:远程代理:也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象在不同地址空间的事实。虚拟代理:是根据需要创建开销很大的对象。通过代理来存放需要很长时间实例化的对象。安全代理:用来控制真实对象的访问权限。 智能引用:当调用真实对象时,代理处理另外一些事。#inclu
2016-04-27 19:10:39
231
转载 设计模式(三)装饰模式
(三)装饰模式动态地给一个对象添加一些额外的职责(不重要的功能,只是偶然一次要执行),就增加功能来说,装饰模式比生成子类更为灵活。建造过程不稳定,按正确的顺序串联起来进行控制。GOOD:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功能),就会增加类的复杂度。装饰模式就是把要添加的附加功能
2016-04-27 15:45:23
164
转载 设计模式之基本原则
单一职责原则就一个类而言,应该仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其它职责能力。这种耦合会导制脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。开放――封闭原则 软件实体可以扩展,但是不可修改。即对
2016-04-27 13:24:20
240
转载 设计模式(二)策略模式
(二)策略模式 定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响到使用算法的客户。 策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。 GOOD : 适合类中的成员以方法为主,算法经常变动; 简化了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试)。
2016-04-27 11:42:02
174
转载 设计模式(一)简单工厂模式
主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的虚函数得到不同的效果。GOOD:适用于不同情况创建不同的类时。BUG:客户端必须要知道基类和工厂类,耦合性差。例://基类class COperation{public:int m_nFirst;int m_nSecond;
2016-04-27 08:00:33
219
原创 厚积薄发,立帖为证。
鄙人大学没有规划好,求职不顺。马上毕业了,准备厚积薄发,给自己两年的时间,精进技术,把丢的脸争回来!先在此立帖为证,用博客督促与见证自己的成长与变化。
2016-04-25 21:56:36
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人