前言
之前写代码从来都没有注重设计模式这一块,熟知的并且用的最多的就是单例模式,但是并没有什么卵用,现在项目越来越庞大,每次迭代都要改一堆东西,印象中重复的代码也越来越多,有时候迭代一个版本要改N多个地方的相同代码,如果哪个地方忘了就很蛋疼,但是让我去重构又不知道从何处下手,最近打算将设计模式的东西系统的学习一下,然后将自己写的代码好好的梳理一下。
举个栗子
现在产品经理需要一个图表展示的功能,包括折线图,饼图和柱状图等。于是我写了一个IChart的接口,只有一个display()方法。1
2
3
4
5interface 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
23class 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
11class ChartFactory {
fun generateChartImpl(type: String): IChart {
return when (type) {
"bar" -> BarChart()
"linear" -> LinearChart()
else -> PieChart()
}
}
}
最后我们来测试一下就可以了。1
2
3
4fun main(args: Array<String>) {
val chartImpl = ChartFactory.generateChartImpl("linear")
chartImpl.display()
}
运行结果如下所示,这就是简单的工厂模式。
毒鸡汤
日子还长,请别失望~