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

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库

你可能感兴趣的:(《测试驱动开发与设计模式》开发实例一 DVR-POS库)