封装XML序列化工具类

       一如既往,上来就是个类图,只是这次的项目类太多,放上来也很难一下子看懂,而且也放不上去,就截取了最重要的一部分来说一说

       主要说说①②③④这四部分

       ①是XML序列化的工具,XmlSerializerTool写了xml序列化的一些操作代码,封装起来重用,避免每次序列化写重复代码,这个类实现接口XmlSerializerToolImpl,接口只有void XMLSerializable(String fileName)方法,用来作为序列化的入口,一般项目的XML格式是规定不变的,所以XmlSerializerTool实现了这个接口后就写一些序列化的模板操作。当出现特殊情况,这些模板化的序列化方式不适合使用了,可以通过XmlSerializerToolBySelf这个类,通过暴露XmlSerializerToolImpl接口的方式实现自定义序列化的操作。

       ②当序列化开始以后,①中的XmlSerializerTool会把具体的序列化操作交给XMLSerializerOperator来处理,在XMLSerializerOperator中,调用了XMLInfoWriterFather的writeInfo方法进行序列化操作,XMLInfoWriterFather是个抽象类,其子类继承它后,会做出具体的序列化操作

       ③是一个工厂,XMLSerializerOperator调用XMLInfoWriterFather的子类就是这里来的。我们序列化Book这个对象的数据的时候,要有一套序列化Book的操作,序列化Person的时候,要有一套序列化Person的操作,具体操作Book的序列化的类是XMLBookWriter,而序列化Person的是XMLPersonWriter。这样设计的好处是,当我们新增要序列化的类型时,只需要在这里继承XMLInfoWriterFather,然后实现具体的序列化方式即可,其他代码不需要有任何改动。

       ④中可以看到,几句代码就能实现XML序列化

       总结:封装一个工具,往往用到几个设计模式,一旦设计模式用得好,代码复用性、弹性都会很好,建议大家都看看《Head First 设计模式》这本书,当年看了两遍,受益匪浅。

PS:XML序列化后文件在data/data/包名/files里面

最后附上git地址:https://github.com/WhyAllAIX/PullParserTool/blob/master/XMLpull%E8%A7%A3%E6%9E%90%E5%92%8CXML%E5%BA%8F%E5%88%97%E5%8C%96.rar

猜你喜欢

转载自blog.csdn.net/Magic_Book/article/details/87814370