您的位置:首页 > 其它

(2)工厂方法模式

2015-07-12 15:17 267 查看
一:工厂方法模式的优点

  --->工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。

--->工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中

二:工厂方法模式的缺点

  --->

三:应用场景

--->如果使用简单工厂模式,则工厂类必定过于臃肿。因为简单工厂模式只有一个工厂类,它需要处理所有的创建的逻辑。假如以上需求暂时只支持3种导出的格式以及2种导出的结构,那工厂类则需要6个if else来创建6种不同的类型。如果日后需求不断增加,则后果不堪设想。
  --->这时候就需要工厂方法模式来处理以上需求。在工厂方法模式中,核心的工厂类不再负责所有的对象的创建,而是将具体创建的工作交给子类去做。这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个类应当被实例化这种细节。

四:工厂方法模式的角色

--->抽象工厂(ExportFactory)角色:担任这个角色的是工厂方法模式的核心,任何在模式中创建对象的工厂类必须实现这个接口。在实际的系统中,这个角色也常常使用抽象类实现。

  --->具体工厂(ExportHtmlFactory、ExportPdfFactory)角色:担任这个角色的是实现了抽象工厂接口的具体JAVA类。具体工厂角色含有与业务密切相关的逻辑,并且受到使用者的调用以创建导出类(如:ExportStandardHtmlFile)。

  --->抽象导出(ExportFile)角色:工厂方法模式所创建的对象的超类,也就是所有导出类的共同父类或共同拥有的接口。在实际的系统中,这个角色也常常使用抽象类实现。

  --->具体导出(ExportStandardHtmlFile等)角色:这个角色实现了抽象导出(ExportFile)角色所声明的接口,工厂方法模式所创建的每一个对象都是某个具体导出角色的实例。

五:工厂方法模式的代码示例
案例:前台传来不同的信息,生成不同的App工厂类,从而生成不同的App。

[1]工厂接口

package com.yeepay.sxf.test;

import com.yeepay.sxf.interfaces.APPFactoryInterFace;
import com.yeepay.sxf.interfaces.App;
import com.yeepay.sxf.interfaces.impl.JdAppFactory;
import com.yeepay.sxf.interfaces.impl.TmAppFactory;

public class Test2 {

public static void main(String[] args) {
//早上10:00:01
APPFactoryInterFace factory=new JdAppFactory();
App app=factory.createApp("创建京东工厂需要的材料");
String result=app.giveOrder("一条牛仔裤");
System.out.println("Test2.main()"+result);

//早上10:00:01
factory=new TmAppFactory();
app=factory.createApp("创建天猫工厂需要的材料");
result=app.giveOrder("一条花裙子");
System.out.println("Test2.main()"+result);

}

}


View Code
[5]测试结果

Test2.main()向京东下订单:一条牛仔裤
Test2.main()向天猫下订单:一条花裙子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: