如前面所说,抽象工厂模式是针对产品族概念,一个factory对应多个产品的情况
UML图
代码结构
public class AccessDepartment implements IDepartment {
@Override
public void insert(Departmen departmen) {
System.out.println("在Access中给Department表增加一条记录");
}
}
public class AccessFactory implements IFactory {
@Override
public IUser createUser() {
return new AccessUser();
}
@Override
public IDepartment createDepartment() {
return new AccessDepartment();
}
}
public class AccessUser implements IUser {
@Override
public void insert(User user) {
System.out.println("在Access中给User表增加一条记录");
}
}
public class Client {
public static void main(String[] args) {
User user = new User();
Departmen departmen = new Departmen();
//IFactory factory = new SqlServerFactory();
IFactory factory = new AccessFactory();
IUser iUser = factory.createUser();
iUser.insert(user);
IDepartment iDepartment = factory.createDepartment();
iDepartment.insert(departmen);
}
}
public class Departmen {
private int id;
private String deptName;
}
public interface IDepartment {
void insert(Departmen departmen);
}
public interface IFactory {
IUser createUser();
IDepartment createDepartment();
}
public interface IUser {
void insert(User user);
}
public class SqlServerDepartment implements IDepartment {
@Override
public void insert(Departmen departmen) {
System.out.println("在SQL Server中给Department表增加一条记录");
}
}
public class SqlServerFactory implements IFactory {
@Override
public IUser createUser() {
return new SqlServerUser();
}
@Override
public IDepartment createDepartment() {
return new SqlServerDepartment();
}
}
public class SqlServerUser implements IUser {
@Override
public void insert(User user) {
System.out.println("在SQL Server中给User表增加一条记录");
}
}
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
运行结果