您的位置:首页 > 编程语言 > Java开发

java设计模式之简单工厂模式

2017-07-26 16:10 295 查看
简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。他是由一个工厂类决定创建出哪一种产品类的实例。

该模式的主要思想就是创建一个具体的工厂类(该类里包含了所有创建产品的实例的逻辑),用户只需通过传入类型而由他来决定创建那种产品的实例。

举个例子,假如现在需要导出一种标准类型文件,他有Html格式和Pdf格式,(1)首先自然的做法便是定义一个导出文件的接口,源代码如下:

package com.studyart;
//文件格式的接口,所有格式继承此接口完成各格式的具体逻辑
public interface ExportFile {
public boolean export();
}(2)然后通过继承此接口,实现Html格式和Pdf格式的具体逻辑。
package com.studyart;

public class ExportFinancialHtmlFile implements ExportFile{

@Override
public boolean export() {
// TODO Auto-generated method stub
/**
* 业务逻辑
*/
System.out.println("导出财务版HTML文件");
return true;
}
}
package com.studyart;

public class ExportFinancialPdfFile implements ExportFile{

@Override
public boolean export() {
// TODO Auto-generated method stub
/**
* 业务逻辑
*/
System.out.println("导出财务版PDF文件");
return true;
}
}


(3)创建一个工厂类,根据调用者不同的要求,创建出不同的导出对象并返回。而如果碰到不合法的要求,会返回一个Runtime异常。
package com.studyart;
//定义一工厂类,用于创建各种格式的对象
public class ExportStandarFactory {
public static ExportFile factory(String type){
if(type.equals("Html")){

return new ExportFinancialHtmlFile();

}else if(type.equals("Pdf")){

return new ExportFinancialPdfFile();

}else{
/**
* 这里抛出一个自定义异常会更恰当
*/
throw new RuntimeException("没有找到打印类型");
}
}
}
(4)测试类
package com.studyart;

public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
String exportType = "Pdf";
ExportFile exportFile = ExportStandarFactory.factory(export
4000
Type);
boolean bool = exportFile.export();
if (bool) {
/**
* 业务逻辑
*/
System.out.println("打印成功");
} else {
/**
* 业务逻辑
*/
System.out.println("打印失败");
}
}

}

简单工厂模式就是这样了。
从中可以看出所有创建对象的逻辑都放在了工厂类中,而这也限定了此模式不能处理复杂的逻辑,因为所有的业务逻辑都在这个工厂类中实现,此为牵一发而动全身啊。拿此例来说,现在导出的标准类型文件只有两种,可以用此模式,但如果现在又需要导出其他类型的文件,如财政类型的,他又有两种格式,也是Html格式和Pdf格式等,如果用简单工厂模式的话,工厂类至少需要四个if()else(),若多的话更不方便,此时用此模式就不方便了,工厂模式便可以派上用场了(下文继续更新)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: