1.什么是工厂模式?
工厂模式就是一种用来实例化对象的模式,是用工厂方法代替new的一种模式.
本质上就是将产品公用的部分提取出来,可变的部分留作接口, 将具体产品的创建交给工厂, 方便代码的可扩展和复用.
简单工厂,工厂方法模式以及抽象工厂的区别:
https://blog.youkuaiyun.com/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; } }
测试及结果


博客介绍了工厂模式,它是用工厂方法代替new来实例化对象的模式,将产品公用部分提取,可变部分留作接口,把具体产品创建交给工厂,以方便代码扩展和复用。还提及了简单工厂、工厂方法模式和抽象工厂的区别链接,并阐述了简单工厂的代码结构、实现、获取方式及测试结果。
2349

被折叠的 条评论
为什么被折叠?



