原创:花括号MC(微信公众号:huakuohao-mc),欢迎分享,转载请保留出处。
简单工厂严格的说并不是GOF里面提到的标准的23个设计模式之一。但是日常开发中经常会用到,特别是比较小的系统。简单工厂模式就是通过一个工厂类的工厂方法创建相应的对象。
举个例子
我们希望创建三种不同类型的图表,并进行数据展示,这个时候可以考虑实用简单工厂模式。
先来看一下UML图:
来看一下代码如何实现。
先来定义一个抽象类 Chart
public abstract class Chart{
abstract void diplay();
}
分别定义三种不同的图表,均继承自Chart,这里因为篇幅原因只列出HistogramChart类
//定义柱状图图表类,体现单一职责
public class HistogramChart extends Chart {
@Override
void display() {
//显示柱状图
}
}
定义一个工厂类,通过静态工厂方法,可以创建三种不同类型的图表。
public class ChartFactory {
//静态工厂方法
public static Chart createChart(String chartType){
Chart chart = null;
if (chartType.equalsIgnoreCase("histogram")){
//创建柱状图
chart = new HistogramChart();
}else if (chartType.equalsIgnoreCase("pie")){
//创建饼状图
chart = new PieChart();
}else if (chartType.equalsIgnoreCase("line")){
//创建折线图
chart = new LineChart();
}
return chart;
}
}
来看一下客户端如何使用
public class Client {
public static void main(String[] args){
//通过工厂类得到想要的图表
Chart chart = ChartFactory.createChart("pie");
chart.display();
}
}
总结
简单工厂模式属于创建型模式之一,用于系统比较简单,创建的种类比较少的情况,因为创建的种类如果太多的话,工厂类里面的静态工厂方法if else就太混乱了,而且所要创建的具体类和工厂类耦合太紧密。
推荐阅读
原创:花括号MC(微信公众号:huakuohao-mc)。关注JAVA基础编程及大数据,注重经验分享及个人成长。