设计模式学习-----抽象工厂模式

来源:互联网 发布:usb6009数据采集卡 编辑:程序博客网 时间:2024/05/20 20:56

抽象工厂模式

GOOD:定义了一个创建一系列相关或相互依赖的接口,而无需指定它们的具体类。

用于交换产品系列,如ACCESS->SQLSERVER

产品的具体类名被具体工厂的实现分离

111

#include <string>#include <iostream>#include <vector>using namespace std;//用户抽象接口class IUser{public :virtual void GetUser()=0;virtual void InsertUser()=0;};//部门抽象接口class IDepartment{public:virtual void GetDepartment()=0;virtual void InsertDepartment()=0;};//ACCESS用户class CAccessUser : public IUser{public:virtual void GetUser(){cout<<"Access GetUser"<<endl;}virtual void InsertUser(){cout<<"Access InsertUser"<<endl;}};//ACCESS部门class CAccessDepartment : public IDepartment{public:virtual void GetDepartment(){cout<<"Access GetDepartment"<<endl;}virtual void InsertDepartment(){cout<<"Access InsertDepartment"<<endl;}};//SQL用户class CSqlUser : public IUser{public:virtual void GetUser(){cout<<"Sql User"<<endl;}virtual void InsertUser(){cout<<"Sql User"<<endl;}};//SQL部门类class CSqlDepartment: public IDepartment{public:virtual void GetDepartment(){cout<<"sql getDepartment"<<endl;}virtual void InsertDepartment(){cout<<"sql insertdepartment"<<endl;}};//抽象工厂class IFactory{public:virtual IUser* CreateUser()=0;virtual IDepartment* CreateDepartment()=0;};//ACCESS工厂class AccessFactory : public IFactory{public:virtual IUser* CreateUser(){return new  CAccessUser();}virtual IDepartment* CreateDepartment(){return new CAccessDepartment();}};//SQL工厂class SqlFactory : public IFactory{public:virtual IUser* CreateUser(){return new  CSqlUser();}virtual IDepartment* CreateDepartment(){return new CSqlDepartment();}};//客户端:int main(){IFactory* factory= new SqlFactory();IUser* user=factory->CreateUser();IDepartment* depart = factory->CreateDepartment();user->GetUser();depart->GetDepartment();return 0;}//转载请注明,文章来自:http://blog.csdn.net/windows_nt


 

 

原创粉丝点击