许多同学反映GOF设计模式看不懂,我认为主要有两点原因:
1、你的工作经验太少,或者根本就没有经验。
2、GOF举得的例子,你认为不好理解,我个人也认为GOF举得例子并不是很恰当。
我本来想写代码,但是最后还是决定不写了,因为我认为这个代码并不难,关键是明白Builder模式到底讲的是什么,这才是关键,如果大家明白了Builder模式的本质,代码自己就可以写出来。
好了,废话不多说,我们言归正传:
Director角色代表什么?
其实按照GOF的讲解,Director是一个数据解析器,它负责解析文件、数据库,或者网络流之类的数据,然后通过Builer将文件的内容展示出来。
Builder代表什么?
Builder本质代表的是显示方式,但是由于显示方式有很多种,所以它只能是一个抽象类,不能被实例化,但是它抽象出了所有显示方式共有的操作。
PieChartBuilder代表什么?
它代表饼状图显示方式,是一种具体的显示方式,它具化了Builder,所以可以被实例化。
HistogramBuilder代表什么?
它代表了柱状图显示方式,也是一种具体的显示方式,它具化了Builder,所以可以被实例化。
Client代表什么?
它代表的就是Main函数,或者是使用者,它使用Director解析数据,然后Director使用Builder接口来操作具体的Builder(饼状图、柱状图)来显示数据或者生成数据。
场景描述
现在有一个项目,它要求我们的程序可以解析XML文件、JSON,然后可以用饼状图和柱状图两种方式显示出来。这里我们的程序就是Client角色,XML和JSON代表数据,Director负责解析XML和JSON,然后使用Builder接口操作具体的Builder,将数据展示出来。
这就是Builder的本质,希望能够对你们有所帮助。