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

xiaoxiao2021-02-28  104

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

#include<iostream> using namespace std; class User {     private:         int id;         string name;     public:         int GetId()         {             return id;         }         void SetId(int _id)         {             this->id = _id;         }         string GetName()         {             return name;         }         void SetName(string name)         {             this->name = name;         } }; class Department {     private:         int id;         string name;     public:         int GetId()         {             return id;         }         void SetId(int _id)         {             this->id = _id;         }         string GetName()         {             return name;         }         void SetName(string name)         {             this->name = name;         } }; class IUser {     public:     virtual void Insert(User *user){}     virtual User *GetUser(int id){} }; class SqlserverUser:public IUser {     public:         void Insert(User *user)         {             cout<<"sql server sheet user insert"<<endl;         }         User *GetUser(int id)         {             cout<<"sql server sheet user insert"<<endl;             return NULL;         } }; class AccessUser:public IUser {     public:         void Insert(User *user)         {             cout<<"access sheet user insert"<<endl;         }         User *GetUser(int id)         {             cout<<"access sheet user insert"<<endl;             return NULL;         } }; class IDepartment {     public:     virtual void Insert(Department *department) {}     virtual Department *GetDepartment(int id){} }; class SqlserverDepartment:public IDepartment {     public:         void Insert(Department *user)         {             cout<<"sql server sheet Department insert"<<endl;         }         Department *GetDepartment(int id)         {             cout<<"sql server sheet Department insert"<<endl;             return NULL;         } }; class AccessDepartment:public IDepartment {     public:         void Insert(Department *user)         {             cout<<"access sheet Department insert"<<endl;         }         Department *GetDepartment(int id)         {             cout<<"access sheet Department insert"<<endl;             return NULL;         } }; class IFactory {     public:     virtual IUser *CreateUser(){}     virtual IDepartment *CreateDepartment(){} }; class SqlServerFactory:public IFactory {     public:         IUser *CreateUser()         {             return new SqlserverUser();         }         IDepartment *CreateDepartment()         {             return new SqlserverDepartment();         } }; class AccessFactory:public IFactory {     public:         IUser *CreateUser()         {             return new AccessUser();         }         IDepartment *CreateDepartment()         {             return new AccessDepartment();         } }; int main() {     User *user = new User();     Department *dept = new Department();     IFactory *fact= new AccessFactory();     IUser *iu = fact->CreateUser();     iu->Insert(user);     iu->GetUser(1);     IDepartment *id = fact->CreateDepartment();     id->Insert(dept);     id->GetDepartment(1);          return 0; }

转载请注明原文地址: https://www.6miu.com/read-70431.html

最新回复(0)