c++设计模式之抽象工厂模式

抽象工厂思想理解:
可能有若干个你想生产的产品类,建立个工厂负责分别生产各类产品,由外部客户来选取想要那种产品类,此程序中没有delete,如想delete可在工厂类中的析构函数中实现
(若有错请纠正)
#include <iostream>
#include <string>
#include <vector>


//abstract object interface
class IUser
{
public:
virtual void GetUser()=0;
virtual void InsertUser()=0;
};

//Department
class IDepartment
{
public:
virtual void GetDepatment()=0;
virtual void InsertDepartment()=0;
};

//ACCESS User
class CAccessUser:public IUser
{
public:
virtual void GetUser()
{
std::cout<<"Access GetUser"<<std::endl;
}
virtual void InsertUser()
{
std::cout << "Access InsertUser" << std::endl;
}

};

//ACCESS department
class CAccessDepartment:public IDepartment
{
public:
virtual void GetDepatment()
{
std::cout<<"Access GEtDepartment"<<std::endl;

}
virtual void InsertDepartment()
{
std::cout << "Access InsertDepartment" << std::endl;
}

};

//SQL Access
class CSqlUSer:public IUser
{
public:
virtual void GetUser()
{
std::cout<<"Sql USer"<<std::endl;
}
virtual void InsertUser()
{
std::cout<<"Sql User"<<std::endl;
}

};

//SQL department
class CSqlDepartment:public IDepartment
{
public:
virtual void GetDepatment()
{
std::cout<<"sql Getdepartment"<<std::endl;
}
virtual void InsertDepartment()
{
std::cout<<"sql Insertdepartment"<<std::endl;
}
};

//abstract factory
class IFactory
{
public:
virtual IUser* CreateUser()=0;
virtual IDepartment* CreateDepartment()=0;



};


//ACCESS factory
class AccessFactory:public IFactory
{
public:
virtual IUser* CreateUser()
{
return new CAccessUser();
}
virtual IDepartment* CreateDepartment()
{
return new CAccessDepartment();
}

};

//SQL factory
class SqlFactory:public IFactory
{
public:
virtual IUser* CreateUser()
{
return new CSqlUSer();
}
virtual IDepartment* CreateDepartment()
{
return new CSqlDepartment();
}
};


int main()
{
IFactory* factry=new SqlFactory();
IUser* user=factry->CreateUser();
IDepartment* depart=factry->CreateDepartment();
user->GetUser();
depart->GetDepatment();
return 0;
}







posted @ 2016-10-30 21:26  FeckCode  阅读(262)  评论(0编辑  收藏  举报