美文网首页
《测试驱动开发与设计模式》开发实例一 DVR-POS库

《测试驱动开发与设计模式》开发实例一 DVR-POS库

作者: RonZheng2010 | 来源:发表于2019-01-24 23:15 被阅读0次

    0.1 版权声明

    测试驱动开发与设计模式相结合的开发方式,能产生清晰的结构,弹性的设计,水到渠成地还带来稳定的代码。这里对DVR-POS的介绍是对《测试驱动开发与设计模式 - 从入门到精通》一文的补充。

    DVR-POS应用于M公司的项目中,版权属于M公司。但M公司10多年前已经不在了,所以公布源代码应该也不会给我带来麻烦 。

    git clone https://github.com/sronzheng/dvr-pos.git
    

    0.2 设计目的

    防损在零售行业是一个需要重要考虑的方面,而防损的一个重要环节是结账,少扫描,误扫描是常见的方式。这时需要把监控与账单结合起来,比较监控录像和POS机的收款账单是否有差别。

    但厂家POS机的数据格式各不相同,需要将它们转成自己的标准格式以便显示。这就是DVR-POS库的目的。

    1. Parser

    • Parser是POS数据解析器。它的每个派生类针对一种类型的POS机,如Sams40SParser解析Sams40S的数据, EpsonCROSParser解析EpsonCROS的数据等。
      • 目前这个库支持超过20种类型的POS机, 还可以通过增加Parser派生类,方便地增加其他POS机的支持。
      • Parser使用了Template Method设计模式。
    • ParserFactory根据POS机的名称,创建对应的Parser实例。
      • ParserFactory使用了Factory模式。

    2. 任务链

    • SerialPort从串口中读入POS数据,喂给Parser;Parser解析数据,输出标准项到Receiver。
    • Reciever是一个接收输出项的接口类;StreamReceiver的实现是:将输出项格式化成自定义格式的字符串,写入BinaryStream。
    • Binarystream在列表中暂存该符串暂,等待库的使用者读取。

    3. 对外接口

    • POS将SerialPort,Parser,Receiver和BinaryStream组合成一个任务链,对外提供调用接口。
      • POS使用Facade设计模式。

    相关链接

    测试驱动开发与设计模式 - 从入门到精通
    测试驱动开发与设计模式 - C++书籍及网站
    测试驱动开发与设计模式 - 开发实例(一)DVR-POS库
    测试驱动开发与设计模式 - 开发实例(二)JSON过滤库
    测试驱动开发与设计模式 - 适应并改进软件设计过程
    测试驱动开发与设计模式 - 让“理想结构”与“快速变更”并行
    测试驱动开发与设计模式 - 提速 — 在纸上做细节设计

    相关文章

      网友评论

          本文标题:《测试驱动开发与设计模式》开发实例一 DVR-POS库

          本文链接:https://www.haomeiwen.com/subject/zflejqtx.html