Java模式—简单工厂模式
2015-07-28 22:36
274 查看
[b]简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例,简单工厂模式是工厂模式家族中最简单实用的模式。[/b]
[b]目的:为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。[/b]
它的组成:
1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
以一个工厂生产电视和手机为例进行解释:
首先定义分别定义两个类代表电视和手机,并且都实现了work接口
接着如果想使用这两个类,可以用普通创建对象的方法
这样使用的不好处就是,如果Phone类和TV类一旦改变,就得改变上述代码,可以说类Test10依赖于Phone类和TV类,称这种依赖为[b]耦合:使用者直接使用了具体类,表示当前类依赖该具体类。这样当这个具体类发生变化,使用者将受到影响。[/b]
[b]为了降低这种影响,引入工厂模式:[/b]
增加一个工厂类
这样Test10类的代码就可以为:
这样它由依赖一个具体类转化为依赖接口,降低了耦合,体现了面向接口编程的思想。
这样具体类的变化不会影响到它。
这样写代码虽说和上述结果一样,但是可扩展性增强,维护性更强。
————————————————————————欢迎各位博友指出不足之处,多多交流。
[b]目的:为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。[/b]
它的组成:
1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。
2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。
3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
以一个工厂生产电视和手机为例进行解释:
首先定义分别定义两个类代表电视和手机,并且都实现了work接口
1 interface work{ public void working(); } class Phone implements work{ @Override public void working() { System.out.println("生产手机"); } } class Tv implements work{ @Override public void working() { System.out.println("生产电视"); } }
接着如果想使用这两个类,可以用普通创建对象的方法
1 public class Test10 { public static void main(String[] args) { Phone phone=new Phone(); phone.working(); Tv tv=new Tv(); tv.working(); } }
这样使用的不好处就是,如果Phone类和TV类一旦改变,就得改变上述代码,可以说类Test10依赖于Phone类和TV类,称这种依赖为[b]耦合:使用者直接使用了具体类,表示当前类依赖该具体类。这样当这个具体类发生变化,使用者将受到影响。[/b]
[b]为了降低这种影响,引入工厂模式:[/b]
增加一个工厂类
1 class Factory{ public static Work getWork(String product){ if("phone".equals(product)){ return new Phone(); }else if("tv".equals(product)){ return new Tv(); } return null; } }
这样Test10类的代码就可以为:
1 public class Test10 { public static void main(String[] args) { //依赖接口 Work work=Factory.getWork("tv"); if(work!=null){ work.working(); } } }
这样它由依赖一个具体类转化为依赖接口,降低了耦合,体现了面向接口编程的思想。
这样具体类的变化不会影响到它。
这样写代码虽说和上述结果一样,但是可扩展性增强,维护性更强。
————————————————————————欢迎各位博友指出不足之处,多多交流。
相关文章推荐
- Eclipse快捷键与使用技巧总结
- Java多线程基本知识小结
- java学习笔记(六) collections--stack
- spring多数据源配置
- java心得1
- java中的并发:进程和线程
- JAVA IO流学习案例
- JSON总结- JSON与JAVA的数据转换实例
- springmvc之hello world
- JAVA基础之操作符
- JAVA SE、JAVA EE、JAVA ME的区别,IDE的概念
- dubbo-admin在jdk 1.8上部署出错问题
- struts2工作原理
- 一点一点学架构(三)——Spring.NET IOC
- Java之逻辑错误
- Java学习笔记----一些常用却不清楚的知识
- 单例模式(java 实现 Singleton)(一)
- Java中关于类的个人看法
- Java反射—模拟Spring的Aop
- 一个简单的java僵局演示示例