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;
}
}
(3)创建一个工厂类,根据调用者不同的要求,创建出不同的导出对象并返回。而如果碰到不合法的要求,会返回一个Runtime异常。
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(),若多的话更不方便,此时用此模式就不方便了,工厂模式便可以派上用场了(下文继续更新)
该模式的主要思想就是创建一个具体的工厂类(该类里包含了所有创建产品的实例的逻辑),用户只需通过传入类型而由他来决定创建那种产品的实例。
举个例子,假如现在需要导出一种标准类型文件,他有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(),若多的话更不方便,此时用此模式就不方便了,工厂模式便可以派上用场了(下文继续更新)
相关文章推荐
- Java设计模式(三):工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- Java设计模式学习记录-简单工厂模式、工厂方法模式
- java与设计模式(三)-简单工厂模式(静态工厂)
- java设计模式之工厂方法模式以及简单工厂模式还有抽象工厂模式
- java设计模式之简单工厂模式
- Java设计模式:简单工厂模式(Simple Factory Pattern)
- Java设计模式之工厂模式之简单工厂模式(通过反射)
- Java设计模式——简单工厂模式
- JAVA设计模式之【简单工厂模式】
- 【幻化万千戏红尘】qianfengDay10-java基础学习:成员内部类、静态内部类、局部和匿名内部类,设计模式之简单工厂模式
- Java 设计模式之简单工厂模式的详解(创建模式)
- (三)简单工厂模式详解 分类: java 设计模式
- Java研究之学习设计模式-简单工厂模式详解
- Java设计模式之简单工厂模式
- java设计模式之简单工厂模式
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 简单工厂模式(Simple Factory Pattern) - Java实现
- Java学习笔记---设计模式之简单工厂模式
- Java设计模式(一) 简单工厂模式不简单
- Java设计模式之一(简单工厂模式)