0
我有以下架构。选择合适的数据转换设计模式,验证
- 从用户获取数据
- 验证数据DB
为了简化
Invoice() { getInvoiceId(); getInvoiceAmount(); ... .... }
以我的实现方式之一,从用户输入是xml和在另一它是JSON 同样我有两个数据库,一个存储该发票xml和另一个为JSON
所以我实现了发票接口两倍
InvoiceXml() { xml _invoiceData; getInvoiceId() { return _invoiceData.id; } InvoiceJson() { json _invoiceData; getInvoiceId() { return _invoiceData.id; }
现在我的主类接受发票接口的一个实例。
main(Validator validator, DAO db) { Invoice invoice = inputs.getInvoice(); if (invoice instanceOf InvoiceXml { validator.validateXml(invoice); db.insertXml(invoice); } else //similar for Json }
现在关心我的是验证和db都确实需要发票的JSON/XML表示,但因为我的发票接口上只能靠我通过它来验证和DB之前垂头丧气发票。
我不确定如何以更好的方式进行设计。我正在考虑将Invoice接口更改为POJO,但发票上有很多字段(getInvoiceId和getInvoiceAmount是常用字段),因此我必须将发票内部存储为xml或json值。
我有一个使用Validator接口的原型,但是如何在我想验证InvoiceXml而不需要downcast的情况下强制使用XmlValidator的标准 – Arvind 2012-07-31 14:46:49
interface invoice.validate(Validator v)'and xmlImplementation'validate( Validator v){v.validateXml(this)}' – mishadoff 2012-07-31 14:56:46