您的位置:首页 > 产品设计 > UI/UE

Builder模式在文本解析过程中的运用

2013-12-17 15:28 393 查看
Builder模式,一个被无数大牛细说过无数回的设计模式,其重要性不言而喻。在一些设计模式书籍中builder模式被表述为:将一个对象的构建与它的表示分离,使得同样的构建过程可以创建不一样的表示。举例来说,水泥公司负责生产水泥,至于水泥用来修路还是盖房子那就不是建筑公司负责的事情了。因为不论是修路还是盖房子,都需要水泥这种原材料,这样把水泥这一生产过程独立出来比较合理,否则不可能每个建筑公司都运营着一个建筑原料公司,这样造成了极大的资源,人力成本的浪费。在程序设计世界里,DRP原则时常被提起,毕竟“懒”程序员不见得是坏事。

    Builder模式关键在于分析清楚哪些构建步骤是每个对象表示都会用到的,哪些是属于某个对象的表示所特有的属性。理清楚这些才能比较好的”隔离变化”。

Builder模式图解:

  


        Director是整个builder的核心,一方面,负责生产原材料。另一方面负责更具不同的builder调用不用的对象表示接口。Builder是一组抽象的接口,不实现具体的表示过程,在C++里面也就是一个抽象类。ConcreteBuilder可以有一个或多个,用Director创建的原料表示为各种对象。Product是ConcreteBuilder的结果,是具体产品的表示。在建筑世界里,它可能是一栋房子,一条马路等。

        CSV(comment-seperate-value)文件是一种常见的文件保存的数据格式,因为用文本编辑工具打开可以看到,文件中数据字段之间都有一个逗号分隔开来。 另外CSV格式的文件还可以用excel软件打开。之前在做一个公交项目的时候,站点的信息就是用CSV格式文件来保存。因此,套用builder模式,写了一个CSV文件的解析。

        CSV文件的分隔符跟在每个数据字段后面,比如假设我们用excel打开某个CSV文件显示的是:token1 token2 token3。那么用其他编辑工具打开此文件可以看到:token1,token2,token3。

        不论CSV文件里面存放的内容是什么,其数据存放格式是固定的。Director可以在这里表述为:按照CSV文件格式解析出一个个token,并调用相应的ConcreteBuilder完成不同对象的表述。这里所说的对象的表述可以把每个token都打印出来,也可以构建出一颗DOM树,使得对文件的操作转化为对相应DOM树的操作。

附:.CSV-Builder
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件解析 CSV Builder