摘要:
进入GO语言的学习啦,相关资料网站http://code.google.com/p/golang-china/ 阅读全文
摘要:
首先MFC 提供了消息的处理的链式处理策略,处理消息的请求将沿着预先定义好的路径依次进行处理。消息的发送者并不知道该消息最后是由那个具体对象处理的,当然它也无须也不想知道,但是结构是该消息被某个对象处理了,或者一直到一个终极的对象进行处理了。其次虚函数也是一个典型的运用,当把子类的指针赋值给父类指针对象时,当用这个父类指针调用虚函数时,他首先会看子类中是否有与这个函数类型完全一样的类型,没有才会调用父类的。代码实现参考:http://www.cnblogs.com/wanggary/archive/2011/04/20/2022988.html责任链模式最大的好处就是极大的降低了程序的耦合度。 阅读全文
摘要:
命令模式适用于如下的情况:比如说在一个软件公司,有美术小组,需求小组,测试小组。客户想改变界面风格需要去找美工小组,客户想添加一个功能需要去找需求小组,客户对功能不满意需要去找测试小组。客户不想每次都去不同的部门找不同的人,这时需要一个项目经理就好了,客户只需要找项目经理一个人,告诉他自己的想法,具体是由谁去执行任务由项目经理去分配任务。如上图所示:每个部门都继承IGroup基类,每个部门在自己类中实现自己的功能。ICommand是命令的父类,该类中有每个部门子类的指针,可以调用每个部门的各种功能。用户只需把自己的要求告诉CInvoker,用SetCommand函数:m_command.Exe 阅读全文
摘要:
composite模式(组合模式):一.该设计模式主要用来解决如下问题:如上图所示:我们有一个树形结构,也可以想象成文件管理系统。我们在处理每个节点的时候,不需要考虑它到底是什么节点,因为所实现的方法都是一样的。对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。二.组合模式又分为两种:①透明模式:即在最高层component里面声明所有管理子类的方法(如:add,remove等),这样做的好处就是,对所有的对象接口统一了,可以同等的对待所有的对象,所以为透明模式。但是有些叶子节点是没有这些方法的,因此透明模式不安全。②安全模式:在Compo 阅读全文
摘要:
Decorator模式(装饰者模式):有时候我们想为已有的类添加一些新的职责,可以通过新建一个类继承已有的类。但是这样不仅类的数量会增加,而且继承的深度也会增加,代码会更加复杂。装饰者模式就可以更加好的解决此类问题。其中ConcreteComponent和Decorator类都有共同的基类Component。当然可以让Decorator直接拥有一个指向ConcreteComponent的引用或指针也可以达到同样的效果。但是这样做并不好,如果新添加一个ConreteComponent就需要修改Decorator。而用如上的设计,无论添加多少个ConcretorComponent,都不需要改变De 阅读全文
摘要:
Adapter模式分为两种:类模式和对象模式。类模式代码实现: 1 //Adapter.h 2 class Adapter:public Target ,private Adaptee 3 { 4 public: 5 Adapter(); 6 ~Adapter(); 7 void Request(); 8 protected: 9 private: 10 }; 11 #endif //~_ADAPTER_H_ 12 13 //Adapter.cpp14 Adapter::Adapter() 15 { 16 } 17 Adapter::~Adapter() 18 { 1... 阅读全文
摘要:
1.纯虚函数如果在基类中将函数声明为纯虚函数(pure virtual method),那么基类将不会实现该函数,不提供缺省操作,所有继承的子类都必须分别实现自己的操作。基类也可以实现纯虚函数,在类里声明,在类外面实现,如果子类没有实现的话,就调用父类中的实现。用Parent::A()调用。(不确定)2.虚函数如果在基类中将函数声明为虚函数(virtual method),那么基类就可以为子类提供缺省操作,子类可以选择实现自己的代码,也可以不实现,采用基类的缺省操作。3.非虚函数如果基类中的函数为非虚函数(non-virtual),那么子类不仅要继承基类的接口,还需要继承基类的代码,相当于基类 阅读全文
摘要:
两个类交叉引用导致了上面的错误。 阅读全文
摘要:
结构型模式-bridge设计模式bridge模式实现类图如下:在如上类图中,refinedAbstraction类代表了windows操作系统,该类中维护了一个指向abstractImplement的指针,这样就可以自由的调用下面的具体的方法了。如果用户突然想给windows系统增加一个计算器功能,这样我们就只需要给abstractimplement添加一个子类实现计算器的功能就行。如果用户突然又想,实现mac操作系统,这样我们只需在abstract中添加一个mac的子类,这样mac类中就可以通过一个指向abstractimplement的指针实现上面的功能。以上是我的理解。参考代码:(来自h 阅读全文
摘要:
Prototype模式提供了自我复制的功能,就是说新对象的创建可以通过已有对象进行创建。prototype设计模式不止一个clone方法那么简单,而是为对象的创建提供了统一的clone接口,允许客户代码在不知道对象的具体类型的情况下进行创建。其中拷贝构造函数的原型为: 类名 (const 已存在对象的引用),默认的拷贝构造函数为浅复制,即按位拷贝。如果类中存在指针,组合对象等成员变量是,就不能简单的按位拷贝了,必须自己实现拷贝构造函数,在函数中先为新的对象分配内存,在拷贝值。下面是k_eckel书中的代码片段,其中类里面没有成员变量,只是简单的采用了浅复制。如果是要深复制,要如下这样,代码来自 阅读全文