设计模式-简单工厂

前言

  之前写代码从来都没有注重设计模式这一块,熟知的并且用的最多的就是单例模式,但是并没有什么卵用,现在项目越来越庞大,每次迭代都要改一堆东西,印象中重复的代码也越来越多,有时候迭代一个版本要改N多个地方的相同代码,如果哪个地方忘了就很蛋疼,但是让我去重构又不知道从何处下手,最近打算将设计模式的东西系统的学习一下,然后将自己写的代码好好的梳理一下。

举个栗子

  现在产品经理需要一个图表展示的功能,包括折线图,饼图和柱状图等。于是我写了一个IChart的接口,只有一个display()方法。

1
2
3
4
5
interface IChart {

fun display()

}

  然后编写了几个IChart的子类,如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class PieChart : IChart {

override fun display() {
println("显示饼状图")
}

}

class BarChart : IChart {

override fun display() {
println("显示柱状图")
}

}

class LinearChart : IChart {

override fun display() {
println("显示折线图")
}

}

  就这样写好了图表的相关类。然后就是如何根据不同的类型产生不同的类的对象。

1
2
3
4
5
6
7
8
9
10
11
class ChartFactory {

fun generateChartImpl(type: String): IChart {
return when (type) {
"bar" -> BarChart()
"linear" -> LinearChart()
else -> PieChart()
}
}

}

  最后我们来测试一下就可以了。

1
2
3
4
fun main(args: Array<String>) {
val chartImpl = ChartFactory.generateChartImpl("linear")
chartImpl.display()
}

  运行结果如下所示,这就是简单的工厂模式。result

毒鸡汤

  日子还长,请别失望~

本文标题:设计模式-简单工厂

文章作者:严方雄

发布时间:2018-02-26

最后更新:2018-09-13

原始链接:http://yanfangxiong.com/2018/02/26/设计模式-简单工厂/

0%