一、概念
定义一个工厂类,根据参数的不同返回不同类的实例,这些类具有公共的父类和一些公共的方法。简单工厂模式不属于GoF设计模式,是最简单的工厂模式。在分析简单工厂模式中,引入三个角色概念。Factory(工厂角色)、Product(抽象产品角色)、ConcreteProduct(具体产品角色)。
二、实例分析
背景简单引入,系统提供三个具体产品类分别对应三种图表的打印,三个具体产品类实现同一个抽象产品接口,创建一个工厂类用于区分需要返回的具体产品类,标识用户当前需要打印的图表种类。
1.抽象产品接口
//abstract product interface
public interface Chart {
public void display();
}
2.三个具体产品类// concrete product class No.1
public class HistogramChart implements Chart {
public HistogramChart() {
System.out.println("Create HistogramChart!");
}
public void display() {
System.out.println("Display HistogramChart!");
}
}
//concrete product class No.2
public class LineChart implements Chart {
public LineChart() {
System.out.println("Create LineChart!");
}
public void display() {
System.out.println("Display LineChart!");
}
}
//concrete product class No.3
public class PieChart implements Chart {
public PieChart() {
System.out.println("Create PieChart!");
}
public void display() {
System.out.println("Display PieChart!");
}
}
3.简单工厂类工厂类是简单工厂模式的核心,提供一个static方法用于返回具体产品类的对象,返回对象是抽象产品类型,这也是定义一个公共产品接口的好处。假如如不这么设计,而是将产品类直接平铺开,会有造成什么影响?
// simple factory
public class ChartFactory {
public static Chart getChart(String type) {
Chart chart