通过简单工厂模式解决图表多样性问题

210 阅读2分钟

这是我参与新手入门的第1篇文章

前言

设计模式是前辈们对开发经验的总结,通过学习设计模式,可以帮助我们在开发过程中面临的一些开发问题,但是需要注意,设计模式是一种思想,是解决特定问题的一系列套路,它不是语法规则。本篇我们先从简单工厂说起。

定义

简单工厂模式虽然不属于GoF的23种经典设计模式,但是通常将其作为学习其他工厂模式的基础最好不过了,那么什么是简单工厂模式呢?在《设计模式》一书中对其这样定义:定义一个工厂,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

举例

我们来举一个生活中的例子,假设有一个水果农场,当用户需要某一种水果时,该农场能够通过用户提供的水果的名字来提供该水果从而给到用户。此时,我们将该水果农场称作为工厂,即Factory。该水果称之为Product,而水果的名称为参数。如下图所示:

image.png

代码应用

接下来我们通过一个软件开发中的应用实例来进一步学习和理解简单工厂模式: 假设某软件公司要基于C#开发一套图表库,该图表可以为应用系统提供多种不同外观的图表,比如柱状图、折线图、饼状图等,使用该图库的人只需设置不同的参数即可得到不同的图表外观。 拿到需要求之后首先我们需要进行分析,分析得知,图表库很像我们现实例子中的水果农场,所以图表库为该例子中的工厂Factory,而各个图表则对应为产品Product,图表的名字则为参数。分析完了,接下来我们开始编写代码:

1、首先定义抽象接口类IChart:

1.png

2、产品类圆柱状HistogramChart

2.png

3、产品类折线图LineChart

3.png

4、产品类饼状图PieChart

4.png

5、创建工厂类,根据参数返回不同的图表类

5.png

6、实例测试

6.png

7.png

使用场景:

1、工厂类负责创建的对象比较少

2、客户端只知道传入工厂类的参数,对如何创建对象并不关心。