2012-05-24 121 views
1

假設有5家汽車租賃機構,當一個人在網上進行租賃時,將XML與汽車租賃詳情一起發送到租賃機構,由某些軟件進行解析並將其輸入到他們的系統中。我可以避免在以下情況下覆蓋方法嗎?

現在,如果有發送XML用於汽車租賃的標準方式,那麼這很容易,但是讓我們假設每個機構與不同的接口合作,用於發送汽車租賃和每個接口發送XML不同的格式,所以當它需要被解析時,你不能有一個標準的方法,你需要能夠覆蓋處理多個接口的方法。舉個例子,你可能有以下2種:

<Rental> 
<FirstName>John</FirstName> 
<LastName>Doe</LastName> 
<Pickup time="13:00"/> 
<Date>06/06/12</Date> 
</Rental> 

VS

<Rental> 
<Name> 
<First>John</First> 
<Last>Doe</Last> 
</Name> 
<Pickup time="13:00" date="06/06/12"/> 
</Rental> 

如果每輛車機構使用不同的接口來處理租金,是覆蓋的方法5次,唯一的辦法每個新的代理機構,它將不得不再次增長,還是有一個更簡單的方法呢?

+1

您可能需要考慮使用XSLT將XML轉換爲某些標準格式並將其轉換爲某些標準格式。您可以使用XslCompiledTransform對象將XSLT腳本應用於任何XML文檔,並讓其輸出轉換後的XML文檔。你可以用文件或全部內存來做到這一點。 –

+1

擁有一個針對租賃的通用接口以及針對每個變體的實現似乎是一種相當標準且合理的解決方法。 –

+0

@SteveDog - 我見過XSLT,但看起來有點嚇人。 – Xaisoft

回答

0

這聽起來像是使用Decorator Pattern的好例子。假設你正在做OOP,你可以有一個基礎對象爲租車提供數據,然後用另一個對象正確地格式化數據來包裝它(或裝飾它)。您需要爲各個汽車租賃公司製作一個獨立的裝飾者。

0

如果您需要爲新代理機構做的唯一事情就是將數據解析爲內部數據展示,那麼通過一切手段都非常好;)。爲什麼要考慮一些看似非常適合分散商業智慧的東西呢?

我想你可以通過很多方式解決它,但如果你真的想。我會玩弄創建ai或ann的想法來匹配最適合的輸入。但任何解決方案都可能會比實施獨特的「parseCustomersData」功能更昂貴。

相關問題