工厂方法模式
来源:互联网 发布:sql 查询包含字段的表 编辑:程序博客网 时间:2024/06/06 00:59
对于工厂模式,第三方框架用的比较多,懂的比较少,更别提自己去造了。为先初步理解下工厂方法模式,等以后有个更深刻认识再来更。
简单工厂模式就是造一个工厂接口,造一个产品接口,产生不同的具体实现类产品,然后用利用实现类工厂去生产产品,用户无需关心产品的生产过程,只在意最后拿到的产品即可。
书中以女娲造人为例,这里也拿这个好了。
首先定义我们要造的人的接口。
public interface Human{ //产品的逻辑实现 void getColor(); void getLanguage();}
定义几个具体实现的子类
//白人public class WhiteMan implements Human{ public void getColor(){ System.out.println("我是白色人种"); } public void getLanguage(){ System.out.println("我讲英语"); }}
//黄种人public class YellowMan implements Human{ public void getColor(){ System.out.println("我是黄种人"); } public void getLanguage(){ System.out.println("我讲汉语"); }}
生产产品的工厂
public calss abstract Facory{ public abstract <T extends Human> T createHuman(Class<T> clz); }
具体的工厂类
public class HumanFacory extends Factory{ Human human=null; try{ human=(T)Class.forName(cla.getName()).newInstance(); }catch(Exception e){ System.out.println("生产错误"); } } return (T)human;}
工厂模式目前我所理解的最大功能是做到解耦,把具体产品类和工厂类分开,有利于代码的扩展,我即使再增加一个具体实现类,工厂类基本上也无需更改,
用户只需告诉工厂我要生产什么,那么就可以拿到什么,具体的生产过程与用户无关。
对于工厂方法模式,最简单是是简单工厂模式,即静态工厂模式:
public class HumanFactory{ public static <T extends Human> T careatHuman(Class<T> c){ Human human=null; try{ human=(Human)Class.forName(c.getName()).newInstance(); }catch(Exception e){ System.out.println("生产错误); } }}
还有升级为多个工厂类,替代单例模式与延迟初始化,目前水平不够,无法理解那么多,暂时对于工厂模式的好处也没有体会。只能分析到这里。学习是个无止境的过程。。。
0 0
- 工厂模式 -- 工厂方法
- 工厂模式-工厂方法
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式-工厂方法模式
- 工厂模式---工厂方法模式
- 【模式】工厂方法模式
- 工厂方法,抽象工厂模式
- C#工厂模式-工厂方法
- 工厂模式 和工厂方法
- 工厂模式-C-工厂方法
- 工厂模式以及工厂方法
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂方法、抽象工厂模式
- 工厂模式(简单工厂、工厂方法)
- 简单工厂|工厂方法|抽象工厂模式
- 设计模式-工厂模式(简单工厂模式+工厂方法模式)
- 1009 说反话
- mybatis in的使用问题
- Android 控件绑定事件的几种方法
- JSON与XML的区别比较
- java--容器
- 工厂方法模式
- 关于ubuntu14.04下开启wifi给Android使用的方法
- Spring MVC Controller默认是单例
- Django 之 Views
- Windows7 键盘快捷键大全
- Mybatis扫描不到mapper的奇葩问题
- 算法复杂度的计算
- Android自由行之走进zxing,轻松实现二维码扫描
- 鸟哥Java学习之抽象类、接口-面向对象