注:学习来源来自于北风网的java设计模式视频教程,android源码设计模式解析和实战,head first设计模式
例1:
思路:
苹果类,包含获取苹果的方法。
香蕉类,包含获取香蕉的方法。
主类:创建苹果实例,香蕉实例,分别调用获取方法。
改进1:
有共同方法-》抽象出一个水果接口
改进2:
创建出一个水果工厂, 完成获取苹果,获取香蕉的行为。
优势:主类只需要创建一个工厂类即可。
改进3:
将水果工厂中的获取方法设置成静态。
优势:调用类不需要创建对象,可直接调用里面的方法。
改进4:
将工厂中的获取放到一个方法中,根据传入的类型获取不同的产品
改进5:
将工厂类中的获取方法由条件判断改为反射,可减少工厂代码的修改
缺点:传入的参数不灵活。
总结:所有的产品通过工厂来获取。
该模式缺陷,随着功能实例的扩充,需要不断的改写工厂类,代码繁多,(反射可解决,但传参麻烦)。
该部分代码已上传:
http://download.csdn.net/detail/mark_gsd/9699671
运用:
数据库分很多,比如mysql,oracle,等等。
使用JDBC时就用到了这种反射机制,如:通过Class.forName("com.mysql.jdbc.Driver")来获取mysql的具体实例来进行操作;
安卓源码中的简单工厂模式:
博客http://blog.csdn.net/qq_26222859/article/details/50497234
中就讲到了两种简单工厂模式的运用,可以自己参考。
同时另一篇论文http://m.w2bc.com/article/43693也有讲解。
同时将BitmapFactory写了一个运用的小demo:
http://download.csdn.net/detail/mark_gsd/9699765