我有以下架构。
- 从用户那里获取数据
- 验证数据
- 将数据存储在数据库中
为简化起见,我们假设数据的类型为 Invoice。我已将 Invoice 定义为接口
发票 () { 获取发票 ID (); 获取发票金额(); ... …… }
在我的一个实现中,来自用户的输入是 xml,另一个是 json。类似地,我有两个数据库,一个将发票存储为 xml,另一个存储为 json
所以我两次实现 Invoice 接口
发票Xml () { xml _invoiceData; getInvoiceId() { 返回_invoiceData.id; } 发票Json () { json _invoiceData; getInvoiceId() { 返回_invoiceData.id; }
现在我的主类接受 Invoice 接口的一个实例。
main(验证器验证器,DAO 数据库) { 发票发票 = inputs.getInvoice(); if (invoice instanceOf InvoiceXml { 验证器.validateXml(发票); db.insertXml(发票); } else //与 Json 类似 }
现在我担心的是验证器和 db 实际上都需要发票的 json/xml 表示,但由于我只依赖 Invoice 接口,我必须在将 Invoice 传递给 validate 和 db 之前对其进行向下转换。
我不确定如何以更好的方式设计它。我正在考虑将 Invoice 接口更改为 POJO,但 Invoice 上有很多字段(getInvoiceId 和 getInvoiceAmount 是常用的),因此我必须在内部仅将发票存储为 xml 或 json 值。