封装工具类实现XMLPull解析
首先上来就是类图
PullParserTool里面封装了Pull解析的一些过程,除了开始标签和结束标签以外,其他代码都是Pull的常规写法,开始标签和结束标签的处理主要交给实现XMLParserHelper的类来处理。我们看到PullParserTool中“有一个”XMLParserHelper的实例(Head First设计模式中:“有一个”比“是一个”好)。一旦代码执行到了开始标签或结束标签的位置,就执行xmlParseHelper.xmlPullParserStart(parser)或者xmlParseHelper.xmlPullParserEnd(parser)。
接着让XMLParseHelperFather这个类实现接口xmlParseHelper,父类什么也不做,定义一些子类的公共参数,考虑到子类以后会有公共的方法,所以才XMLParseHelperFather作为一个父类存在。
XMLParseHelperFather的子类实现具体的解析操作,以XMLParseHelperForBooks为例,XMLParseHelperForBooks的解析格式如下,
也就是PullParserTool中,一旦代码执行到了开始标签或结束标签的位置,其实执行的是XMLParseHelperFather的子类XMLParseHelperForBooks的xmlPullParserStart(parser)或者xmlPullParserEnd(parser)方法。执行完毕后,通过getData可以得到一个Object类型的数据,这个数据通过转型就是我们要的Book的集合。
当出现更多要解析的类型的时候,比如XMLParseHelperForPersons,只需要在XMLParseHelperForPersons中实现具体的解析操作,就可以得到对应的Person的集合,这样就实现了模块化,不管以后新增多少XML文件格式,只要让XMLParseHelperFather的子类去实现就好。