抽象工厂模式
定义:抽象工厂模式和工厂模式非常像,从定义出发,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。(就像下面的实例一样,只有一个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(); //然后可以进行数据的操作 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix