您的位置:首页 > 其它

设计模式:工厂模式-文具制造工厂流程就是这样的!

2013-06-25 19:55 162 查看
工厂模式:

实例化对象,用工厂方法代替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)制作的对象很多时候都是不一样的,不同的对象使用不同的工厂,而不同的工厂需要遵循相同的一个接口的标准

所以我们倡导使用抽象工厂方法模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: