欢迎来到天天文库
浏览记录
ID:40388007
大小:162.00 KB
页数:33页
时间:2019-08-01
《设计模式之C++版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、这里,对设计模式的概念就不细说了,凡是用过或者看过这方面书籍的都应该有所了解。鄙人认为正是设计模式的出现,使得C++的三大性质——封装、继承和多态发挥的淋漓尽致。尤其是多态性质,可以说是面向对的精髓所在。封装性是为了很好的管理数据和方法;继承是为了提高代码的重用;而多态的出现,使得执行过程中,出现多样性,调用一个方法时,可以从父类跳到子类执行,又从子类调用父类的方法等等,函数调用过程呈现曲线形式。总之,执行期,表现出多样化。所以,要想很好的掌握设计模式,必须对多态性有很深的了解,再则,对类与类之间的关
2、系有个清晰的认识,类与类之间的关系,无非6大关系——继承和实现、依赖和关联、组合和聚合。每个模式都是对类之间的这6种关系进行组合,呈现出不同的表现形式,下面,一一介绍23种设计模式,用到的类之间的关系和C++代码(在VS2008调试没问题的)。先说创建型模式:1、FactoryPattern工厂模式使用到的类关系:继承和依赖33/33图1工厂模式UML图Head.h#ifndef_FACTORY_HEAD_#define_FACTORY_HEAD_#includeusingstd:
3、:cout;usingstd::endl;classCProduct;classCFactory{private:public:CFactory(){}~CFactory(){}public:virtualCProduct*CreateProduct()=0;};classCConcreteFactory:publicCFactory{private:public:CConcreteFactory();~CConcreteFactory();public:virtualCProduct*CreateP
4、roduct();};classCProduct{private:public:CProduct(){}~CProduct(){}public:virtualvoidOperation()=0;};classCConcreteProduct1:publicCProduct{private:public:CConcreteProduct1();~CConcreteProduct1();public:virtualvoidOperation();};classCConcreteProduct2:publi
5、cCProduct{private:public:CConcreteProduct2();~CConcreteProduct2();public:virtualvoidOperation();};#endif33/33Main.cpp#include"Head.h"CConcreteFactory::CConcreteFactory(){}CConcreteFactory::~CConcreteFactory(){}CProduct*CConcreteFactory::CreateProduct(){
6、returnnewCConcreteProduct2();}//////////////////////////////////////////////////////////CConcreteProduct1::CConcreteProduct1(){}CConcreteProduct1::~CConcreteProduct1(){}voidCConcreteProduct1::Operation(){cout<<"CConcreteProduct1Operation!"<7、////////////////////////////////////////////////CConcreteProduct2::CConcreteProduct2(){}CConcreteProduct2::~CConcreteProduct2(){}voidCConcreteProduct2::Operation(){cout<<"CConcreteProduct2Operation!"<8、CProduct*pPro=pFac->CreateProduct();if(pPro!=NULL)pPro->Operation();deletepPro;deletepFac;return0;}33/332、AbstractFactoryPattern抽象工厂模式使用到的类关系:继承和依赖图2抽象工厂模式Head.h#ifndef_ABSTRACT_FACTORY_HEAD_#define_ABSTRACT_FACTORY_HEAD_#include
7、////////////////////////////////////////////////CConcreteProduct2::CConcreteProduct2(){}CConcreteProduct2::~CConcreteProduct2(){}voidCConcreteProduct2::Operation(){cout<<"CConcreteProduct2Operation!"<8、CProduct*pPro=pFac->CreateProduct();if(pPro!=NULL)pPro->Operation();deletepPro;deletepFac;return0;}33/332、AbstractFactoryPattern抽象工厂模式使用到的类关系:继承和依赖图2抽象工厂模式Head.h#ifndef_ABSTRACT_FACTORY_HEAD_#define_ABSTRACT_FACTORY_HEAD_#include
8、CProduct*pPro=pFac->CreateProduct();if(pPro!=NULL)pPro->Operation();deletepPro;deletepFac;return0;}33/332、AbstractFactoryPattern抽象工厂模式使用到的类关系:继承和依赖图2抽象工厂模式Head.h#ifndef_ABSTRACT_FACTORY_HEAD_#define_ABSTRACT_FACTORY_HEAD_#include
此文档下载收益归作者所有