设计模式系列——简单工厂模式

427 阅读2分钟

原创:花括号MC(微信公众号:huakuohao-mc),欢迎分享,转载请保留出处。

简单工厂严格的说并不是GOF里面提到的标准的23个设计模式之一。但是日常开发中经常会用到,特别是比较小的系统。简单工厂模式就是通过一个工厂类的工厂方法创建相应的对象。

举个例子

我们希望创建三种不同类型的图表,并进行数据展示,这个时候可以考虑实用简单工厂模式。

先来看一下UML图:

simpleFactory.png

来看一下代码如何实现。

先来定义一个抽象类 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就太混乱了,而且所要创建的具体类和工厂类耦合太紧密。

推荐阅读

1. Java并发编程那些事儿(十)——最后的总结

2. 程序员应该掌握的常用网络问题定位工具

3. Awk这件上古神兵你会用了吗

4. 手把手教你搭建一套ELK日志搜索运维平台

原创:花括号MC(微信公众号:huakuohao-mc)。关注JAVA基础编程及大数据,注重经验分享及个人成长。