抽象工厂模式
来源:互联网 发布:模拟宇宙软件 编辑:程序博客网 时间:2024/06/05 17:53
#include <iostream>#include <string>using namespace std;class IUser{public: virtual void getUser()=0; virtual void setUser()=0;};class SqlUser:public IUser{public: void getUser() { cout<<"在sql中返回user"<<endl; } void setUser() { cout<<"在sql中设置user"<<endl; }};class AccessUser:public IUser{public: void getUser() { cout<<"在Access中返回user"<<endl; } void setUser() { cout<<"在Access中设置user"<<endl; }};class IDepartment{public: virtual void getDepartment()=0; virtual void setDepartment()=0;};class SqlDepartment:public IDepartment{public: void getDepartment() { cout<<"在sql中返回Department"<<endl; } void setDepartment() { cout<<"在sql中设置Department"<<endl; }};class AccessDepartment:public IDepartment{public: void getDepartment() { cout<<"在Access中返回Department"<<endl; } void setDepartment() { cout<<"在Access中设置Department"<<endl; }};class IFactory{public: virtual IUser *createUser()=0; virtual IDepartment *createDepartment()=0;};class SqlFactory:public IFactory{public: IUser *createUser() { return new SqlUser(); } IDepartment *createDepartment() { return new SqlDepartment(); }};class AccessFactory:public IFactory{public: IUser *createUser() { return new AccessUser(); } IDepartment *createDepartment() { return new AccessDepartment(); }};/*************************************************************/class DataAccess{private: static string db; //string db="access";public: static IUser *createUser() { if(db=="access") { return new AccessUser(); } else if(db=="sql") { return new SqlUser(); } } static IDepartment *createDepartment() { if(db=="access") { return new AccessDepartment(); } else if(db=="sql") { return new SqlDepartment(); } }};string DataAccess::db="sql";/*************************************************************/int main(){ //IFactory *factory=new SqlFactory(); IFactory *factory; IUser *user; IDepartment *department; factory=new AccessFactory(); user=factory->createUser(); department=factory->createDepartment(); user->getUser(); user->setUser(); department->getDepartment(); department->setDepartment(); user=DataAccess::createUser(); department=DataAccess::createDepartment(); user->getUser(); user->setUser(); department->getDepartment(); department->setDepartment(); return 0;}
GOOD:定义了一个创建一系列相关或相互依赖的接口,而无需指定它们的具体
类。
用于交换产品系列,如 ACCESS>SQL SERVER;
产品的具体类名被具体工厂的实现分离
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- Sort List
- 一篇文章读懂C的指针
- 将博客搬至CSDN
- ajax动态更新下拉列表
- Linux C Socket编程原理及简单实例
- 抽象工厂模式
- mysql编译安装
- 第四周 项目1-4 求三角形面积(参数初始化表)
- 在MifareS50中,如果第2区的访问控制码为FF 08 70 69,则该区块1的访问控制条件
- 更改IDEA的包结构显示
- 树形dp简单总结
- Hadoop学习笔记之RPC
- 例题6-13 古代象形符号 UVa1103
- 车友真实评测:行车记录仪什么牌子好?德国汉科斯记录仪---