抽象工厂模式
其他二十三种设计模式
#include<iostream>
using namespace std;
class AbstractUser {
public:
virtual void Inser() = 0;
};
class SqlserverUser :public AbstractUser {
public:
virtual void Inser() {
cout << "在SQL server中给User表中增加一条记录" << endl;
}
};
class AccessUser :public AbstractUser {
public:
virtual void Inser() {
cout << "在Access中给User表中增加一条记录" << endl;
}
};
class AbstractDepartment{
public:
virtual void Inser() = 0;
};
class SqlserverDepartment :public AbstractDepartment{
public:
virtual void Inser() {
cout << "在SQL server中给Department表中增加一条记录" << endl;
}
};
class AccessDepartment :public AbstractDepartment{
public:
virtual void Inser() {
cout << "在Access中给Department表中增加一条记录" << endl;
}
};
class AbstractFactory {
public:
virtual AbstractUser* User() = 0;
virtual AbstractDepartment* Department() = 0;
};
class SqlserverFactory :public AbstractFactory {
public:
virtual AbstractUser* User() {
return new SqlserverUser;
}
virtual AbstractDepartment* Department() {
return new SqlserverDepartment;
}
};
class AccessFactory :public AbstractFactory {
public:
virtual AbstractUser* User() {
return new AccessUser;
}
virtual AbstractDepartment* Department() {
return new AccessDepartment;
}
};
void test1() {
AbstractFactory* factory = NULL;
AbstractUser* user = NULL;
AbstractDepartment* department = NULL;
factory = new AccessFactory;
user = factory->User();
user->Inser();
delete user;
delete factory;
factory = new SqlserverFactory;
department = factory->Department();
department->Inser();
delete department;
delete factory;
}
int main()
{
test1();
return 0;
}