上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 30 下一页
摘要: 1. 外观模式: 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。外观模式的使用场合:A: 设计初期阶段,应该要有意识的将不同的两个层分离。B: 在开发阶段,子系统往往由于不断的重构演化而变得越来越复杂,C: 在维护一个遗留的大系统时,可能这个系统已经非常难以维护和扩展。将 和复杂的子系统打交道的任务交给 Facade, 客户端只需要调用简洁的Facade方法。实例:subsystem.h subsystem.cpp#ifndef SUBSYSTEM_H#define SUBSYSTEM_H#includeusing namespace s 阅读全文
posted @ 2013-10-09 15:08 今晚打酱油_ 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1. 模板方法模式: 定义一个操作中的算法骨架,而将一些操作延迟到子类, 模板方法模式使得子类可以不改变一个算法的结构既可以重定义该算法的某些特定步骤。当不变和可变的行为在方法的子类实现中混在一起的时候,不变的行为就会子类中重复出现,通过模板方法模式可以将这些不变的行为搬到一个地方,这样就可帮助子类摆脱重复的不变行为的纠缠。模板方法模式就是提供一个很好的代码复用平台。实例: template.h template.cpp 模板#ifndef TEMPLATE_H#define TEMPLATE_Hclass Template{public: Template(); void tem... 阅读全文
posted @ 2013-10-09 11:33 今晚打酱油_ 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 1. 原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。。。注意: 拷贝的时候是浅拷贝 还是 深拷贝, 来考虑是否需要重写拷贝构造函数。关键在于: virtual Prototype* clone(); 克隆函数。。。返回一个克隆的对象。实例: 以深拷贝为例prototype.h prototype.cpp#ifndef PROTOTYPE_H#define PROTOTYPE_Hclass Prototype{public: int a; char *str; Prototype(int b, char* cstr); Prototype(c... 阅读全文
posted @ 2013-10-09 10:35 今晚打酱油_ 阅读(165) 评论(0) 推荐(0) 编辑
摘要: http://www.cnblogs.com/BlueTzar/articles/1223313.htmlC++拷贝构造函数(深拷贝,浅拷贝)对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#includeusingnamespacestd;classCExample{private: inta;public: CExample(intb) {a=b;} voidShow() {coutusingnamespacestd;classCExample{ 阅读全文
posted @ 2013-10-09 09:53 今晚打酱油_ 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 1. 工厂方法模式 定义一个用于创建对象的接口, 让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。和简单工厂模式相比:A: 简单工厂模式最大的优点在于工厂类中包含有必要的逻辑判断, 根据客户端的选择条件动态实例化相关的类,对客户端来说去除了与具体产品的依赖。但缺点是 添加新产品时 需要修改工厂类 case, 违背了 "开放-封闭" 原则。B: 工厂方法模式实现时,需要由客户端来决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在,只是由工厂类内部转移到客户端。实例: operation.h-- operation.cpp#ifndef OPERATION 阅读全文
posted @ 2013-10-09 09:06 今晚打酱油_ 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 1. 代理模式: 为其他对象提供一种代理以控制这个对象的访问。代理模式使用场合:a. 远程代理, 为一个对象在不同的地址空间提供局部代理,隐藏一个对象存在于不同地址空间的事实。如.net中WebService的应用。b. 虚拟代理, 根据需要创建开销很大的对象, 通过它来存放实例化需要很长时间的真是对象。 如浏览器中 大图片的 显示过程,先显示一个代理,下载完成后在显示真实。c. 安全代理, 用来控制真实对象访问时的权限。d. 智能指引, 当调用真实对象时, 代理处理另一些事。实例:givegift.h 代理和追求者总有的特征作为接口#ifndef GIVEGIFT_H#define GIVE 阅读全文
posted @ 2013-10-08 15:52 今晚打酱油_ 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 1.装饰者模式 Decorator动态地给一个对象添加一个额外的职责, 就添加功能来说, 装饰模式比生成子类更为灵活。每个装饰对象的实现和如何使用这个对象分离, 每个装饰对象只关心自己的功能,不需要关心如何被添加到对象链中。实例: 人和衣服的装饰关系。person.h Person类#ifndef PERSON_H#define PERSON_H#include #include using namespace std;class Person{public: Person(); Person(string name); void virtual show();private... 阅读全文
posted @ 2013-10-08 14:46 今晚打酱油_ 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 1. 策略模式: 它定义了算法家族, 分别封装起来,使他们之间可以相互替换,此模式让算法变化, 不会影响到使用算法的客户。用相同的方法调用不同的算法,减少各种算法类与使用算法类之间的耦合。实例中策略模式与工厂模式相结合,不同之处在于 main函数的使用体现,如果用但纯的工厂模式则必须知道两个类, 但是两种模式结合后,客户端只需要知道一个类 context .另外,工厂模式生产的是具体的算法, 而策略模式则是能通过不同策略调用不同算法,直接获取需要的结果。实例:strategy.h 策略基类#ifndef STRATEGY_H#define STRATEGY_Hclass Strategy{pu 阅读全文
posted @ 2013-10-08 09:30 今晚打酱油_ 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 实现《大话设计模式》的C++版本。。。1. 工厂模式 使用的范围是 同一个基类,下面很多子类。(1)这里很容易出现的一个问题n多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如new ×××;的代码。这里带来两个问题1)客户程序员必须知道实际子类的名称(当系统复杂后,命名将是一个很不好处理的问题,为了处理可能的名字冲突,有的命名可能并不是具有很好的可读性和可记忆性,就姑且不论不同程序员千奇百怪的个人偏好了。),2)程序的扩展性和维护变得越来越困难。(2)还有一种情况就是在父类中并不知道具体要实例化哪一个具体的子类。这里的意思为:假设我们在类A中要使 阅读全文
posted @ 2013-10-07 15:53 今晚打酱油_ 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 原味地址:http://www.cnblogs.com/codingmylife/archive/2010/08/30/1812739.htmlCTRL+Enter发送信息的实现在现在的即时聊天程序中,一般都设置有快捷键来实现一些常用的功能,类似QQ可以用CTRL+Enter来实现信息的发送。在QT4中,所有的事件都继承与QEvent这个类,以下是用QEvent来实现快捷键的功能。首先所有QT类的基类QObject有一个成员函数installEventFilter,这个函数是用来将一个事件处理器和该QObject绑定起来,所以就有了我下面的想法。首先在chat类定义一个eventFilter, 阅读全文
posted @ 2013-09-26 09:57 今晚打酱油_ 阅读(6494) 评论(0) 推荐(0) 编辑
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 30 下一页