利用设计模式重构AutoGenNetconfXML工具

前几个礼拜一直在学设计模式,而且通过把《大话设计模式》中用C#编写的例子用Python实现了,大大增加了我对面向对象编程的理解,同时也增加了我对Python编程的信心和兴趣。这个礼拜就把自己曾经编写的自动化产生Netconf配置文件的工具重构了一下,重构代码在我的github账号里。https://github.com/givemefiveagain/CNetconf


学习了设计模式的好处,在于能帮助我理清项目中所设计的对象之间的关系,以及如果圈定和设计类。

在这次重构过程中,我主要采用的设计模式有:在创建ElementTree时采用了工厂模式、创建者模式,在保存ElementTree时采用了collections.defaultdict用来保存父节点与子节点之间一对多的关系,在设计ElementTree时充分利用了封装和继承关系,让所有的子树得共性都放在父类中,避免了不必要的重复。

该工具名为CNetconf,这个工具的功能主要分为四大块:

  1. ParserXML模块--解析产品的MIB文件,从中提取表的外层的层次关系,以及表里面的参数
  2. ParserArgvs模块--解析入参。之前尝试使用python内置模块argparse,但是由于该工具的入参的可变性很大,不适合。
  3. BuilTree模块--构造输出Netconf XML的三大部分,最外层是start-session,close-session, 中间层是rpc-ManagedFunction,最里层是表moname-attrs
  4. BuildXML模块--介绍入参,并解析入参,调用BuildTree中的三个部分,构造出预期的完整的netconf xml文件

在重构过程中,我使用了以下两个工具:

  1. 采用Visual Paradigm工具画UML关系图。该CNetconf分为四大模块,以及每个模块内部的类之间的UML关系,每个类内部的属性和方法
  2. 采用PyCharm编程工具。该工具能创建项目,并实时编译,在线运行,很好用。就是快捷键还不太适应。
图一 UML关系图



同时尝试利用setuptools对CNetconf的源代码进行打包,只能打包python源文件,我想把MIB文件也打包进行,尝试失败,以后需要改进的地方。

输出入下图所示



经过一周的努力,也算有些收获和输出,但还有以下几点需要提高的:

  1. 在进行代码编写前先画出UML图,设计好模块,模块里的类,类的属性与方法等
  2. 利用Pycharm进行编码,便于项目管理,同时利用Git进行代码管理
  3. 利用迭代的方法,重复迭代,尽早发包,这样能提高效率,避免不止境的优化
  4. 这个模块的设计是我从面向过程到面向对象编程的第一步,不够完美,还有很多需要改进的地方。
  5. 如何提高代码的效率,比如CPU,memory等,要经常自我提醒




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值