1.什么是工厂模式?
工厂模式就是一种用来实例化对象的模式,是用工厂方法代替new的一种模式.
本质上就是将产品公用的部分提取出来,可变的部分留作接口, 将具体产品的创建交给工厂, 方便代码的可扩展和复用.
简单工厂,工厂方法模式以及抽象工厂的区别:
https://blog.csdn.net/yalishadaa/article/details/79332474
https://www.cnblogs.com/laixiancai/p/4808087.html
2.应用-简单工厂
代码结构
代码实现
获取具体实现的方式
//1 public class RecentHandleFactory { public RecentHandle getRecentHandle(String type){ RecentHandle recentHandle=null; if (type.equals("1")){ recentHandle=new IRencentHandle(); }else if(type.equals("2")){ recentHandle=new KRencentHandle(); } return recentHandle; } } //2 public class RecentHandleFactory { //用来存储RecentHandle的所有实体类对象 private Map<String,RecentHandle> recentHandleMap=new ConcurrentHashMap<>(); public RecentHandleFactory(){ //获取factory的时候初始化所有实现类 recentHandleMap.put("1",new IRencentHandle()); recentHandleMap.put("2",new KRencentHandle()); } public RecentHandle getRecentHandle(String type){ return recentHandleMap.get(type); } } //3 public class RecentHandleFactory { //用来存储RecentHandle的实现类对象 private Map<String,Class<? extends RecentHandle>> recentHandleMap=new ConcurrentHashMap<>(); public RecentHandleFactory(){ this.recentHandleMap.put("1",IRencentHandle.class); this.recentHandleMap.put("2",KRencentHandle.class); } public RecentHandle getRecentHandle(String type){ if (type!=null){ try { return (RecentHandle)recentHandleMap.get(type).newInstance(); } catch (Exception e) { e.printStackTrace(); } } return null; } }
测试及结果