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