设计模式:工厂模式-文具制造工厂流程就是这样的!
2013-06-25 19:55
162 查看
工厂模式:
实例化对象,用工厂方法代替new操作.
使用场景:
当我们需要大量new的时候可以考虑使用工厂模式
为了便于大家理解,大家可以将工厂模式想象成一个工厂制造产品就可以了。
MakeStationery.java 制造文具-接口
抽象工厂角色,给所有相同的制作流程制作规范
Colour.java 枚举
MakePencialBoxFactory.java 制作铅笔盒的工厂
MakePencialFactory.java 制作铅笔的工厂
这样我们就实现了工厂模式,当然,此处是抽象工厂模式。
对于初学者可能会问,我们为什么要定义这么多工厂,我么直接定义一个工厂,然后然后根据不同的分支来创建对象不就可以了么,为什么还要定义一个工厂接口,然后在用不同的工厂类实现该接口呢?
其实道理很简单:
(1)首先,这样分离开来,不容易是正确的代码被修改错误
(2)其次,当我们再想制造其他对象的时候,我们可以自己定义一个工厂来实现我们的接口,避免了扩展功能而要去修改正确代码的问题
(3)制作的对象很多时候都是不一样的,不同的对象使用不同的工厂,而不同的工厂需要遵循相同的一个接口的标准
所以我们倡导使用抽象工厂方法模式
实例化对象,用工厂方法代替new操作.
使用场景:
当我们需要大量new的时候可以考虑使用工厂模式
为了便于大家理解,大家可以将工厂模式想象成一个工厂制造产品就可以了。
MakeStationery.java 制造文具-接口
抽象工厂角色,给所有相同的制作流程制作规范
package com.luzhiming.Factory; /** * @author strungle E-mail: 645707787@QQ.com * @version 创建时间:2013-6-24 下午9:15:03 * * 制造文具-接口 */ public interface MakeStationery { public void makePen(Colour colour); }
Colour.java 枚举
package com.luzhiming.Factory; /** * @author strungle E-mail: 645707787@QQ.com * @version 创建时间:2013-6-24 下午9:22:41 * * 颜色枚举 */ public enum Colour { RED,BLUE,GREEN; }
MakePencialBoxFactory.java 制作铅笔盒的工厂
package com.luzhiming.Factory; /** * @author strungle E-mail: 645707787@QQ.com * @version 创建时间:2013-6-24 下午9:29:32 * * 制作铅笔盒的工厂 * */ public class MakePencialBoxFactory implements MakeStationery { @Override public void makePen(Colour colour) { switch(colour) { case RED: System.out.println("制作红色的铅笔盒"); break; case BLUE: System.out.println("制作绿色的铅笔盒"); break; case GREEN: System.out.println("制作蓝色的铅笔盒"); break; default: System.out.println("制作黑色的铅笔盒"); } } }
MakePencialFactory.java 制作铅笔的工厂
package com.luzhiming.Factory; /** * @author strungle E-mail: 645707787@QQ.com * @version 创建时间:2013-6-24 下午9:15:48 * * * 制作铅笔的工厂 * */ public class MakePencialFactory implements MakeStationery { @Override public void makePen(Colour colour) { switch(colour) { case RED: System.out.println("制作红色铅笔"); break; case BLUE: System.out.println("制作绿色铅笔"); break; case GREEN: System.out.println("制作蓝色铅笔"); break; default: System.out.println("制作黑色铅笔"); } } }
这样我们就实现了工厂模式,当然,此处是抽象工厂模式。
对于初学者可能会问,我们为什么要定义这么多工厂,我么直接定义一个工厂,然后然后根据不同的分支来创建对象不就可以了么,为什么还要定义一个工厂接口,然后在用不同的工厂类实现该接口呢?
其实道理很简单:
(1)首先,这样分离开来,不容易是正确的代码被修改错误
(2)其次,当我们再想制造其他对象的时候,我们可以自己定义一个工厂来实现我们的接口,避免了扩展功能而要去修改正确代码的问题
(3)制作的对象很多时候都是不一样的,不同的对象使用不同的工厂,而不同的工厂需要遵循相同的一个接口的标准
所以我们倡导使用抽象工厂方法模式
相关文章推荐
- 设计模式:工厂模式-文具制造工厂流程就是这样的!
- 解读设计模式----模板方法模式(Template Method),电脑就是这样造出来的
- 设计模式之四:简单工厂(披萨店生产披萨模拟流程)
- Java设计模式_创建型_工厂模式_商品是这样生产的
- 设计模式——工厂模式在开发中的应用(简单计算器)
- 设计模式一:简单工厂模式
- 设计模式一之:简单工厂模式
- 设计模式学习之状态模式:请假流程
- iOS设计模式之简单工厂模式
- Java设计模式之工厂设计模式
- 设计模式--创建型--抽象工厂
- 6、业务隔离(工厂设计模式)
- 设计模式----简单工厂模式
- 设计模式之简单工厂(Factory method)
- java 设计模式学习笔记二 工厂模式Factory
- 设计模式-静态工厂
- 设计模式——1.工厂模式
- 工厂方法设计模式
- 换个角度学习设计模式-抽象工厂
- php设计模式-工厂模式