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过滤库
测试驱动开发与设计模式 - 适应并改进软件设计过程
测试驱动开发与设计模式 - 让“理想结构”与“快速变更”并行
测试驱动开发与设计模式 - 提速 — 在纸上做细节设计
网友评论