抽象工厂模式
定义:抽象工厂模式和工厂模式非常像,从定义出发,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。(就像下面的实例一样,只有一个user类的时候其实就是工厂模式,但如果增加了department的时候,也就是多个产品,那么这就是抽象工厂模式)。
实体类:
public class User { }
public class Department { }
抽象产品类
public interface IUser { void Insert(User user); User getUser(int id); }
public interface IDepartment { void Insert(Department department); Department getDepartment(int id); }
抽象产品类的实现
public class SqlserverUser implements IUser { @Override public void Insert(User user) { System.out.println("在SQL server中给User插入一个数据"); } @Override public User getUser(int id) { System.out.println("在SQL server中的user得到一条数据"); return null; } }
public class SqlserverDepartment implements IDepartment { @Override public void Insert(Department department) { System.out.println("在SQL server中给Department插入一个数据"); } @Override public Department getDepartment(int id) { System.out.println("在SQL server中的Department得到一条数据"); return null; } }
public class AccessUser implements IUser { @Override public void Insert(User user) { System.out.println("在Access中的User插入一个数据"); } @Override public User getUser(int id) { System.out.println("在Access中User得到一条数据"); return null; } }
public class AccessDepartment implements IDepartment { @Override public void Insert(Department department) { System.out.println("在Access中的Department插入一个数据"); } @Override public Department getDepartment(int id) { System.out.println("在Access中Department得到一条数据"); return null; } }
抽象工厂类
public interface IFactory { IUser createUser(); IDepartment createDepartment(); }
抽象工厂类的实现
public class SqlServerFactory implements IFactory { @Override public IUser createUser() { return new SqlserverUser(); } @Override public IDepartment createDepartment() { return new AccessDepartment(); } }
public class AccessFactory implements IFactory { @Override public IUser createUser() { return new AccessUser(); } @Override public IDepartment createDepartment() { return new AccessDepartment(); } }
Main:
public class Main { public static void main(String[] args) { User user = new User(); Department department = new Department(); IFactory factory = new SqlServerFactory();//IFactory factory = new AccessFactory() IUser iUser = factory.createUser(); //然后可以进行数据的操作 } }
浙公网安备 33010602011771号