在java编程语言中模拟抽象工厂模式

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

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

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

[html]

#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;

}

 

你可能感兴趣的:(java)