2013-06-02 137 views
0

我有一個問題。我正在使用VSTO C#並使用MailItem對象和AppointmentItem對象。目前,我對他們每個人的課程都基本相同。唯一的區別是MailItem類在其邏輯中使用MailItem對象,對於AppointmentItem也是如此。不同的對象類型,但需要相同的邏輯

我想以某種方式「合併」這些類,所以我只需要維護一個代碼。這裏有一些選擇我想:

  • 我使用過載試過了,但它仍然造成兩個功能,所以 它或多或少相同的情況以前。

    我試圖用「動態」參數創建單個方法,但當我使用Linq時,它會導致語法錯誤。

    最後,我嘗試使用var,但無濟於事,因爲我需要聲明 它在一個if-else語句中,它的作用域被卡在那裏。

有沒有人有任何建議,如果這是可能的?

在此先感謝!

回答

0

有些時候,由於嚴格的打字規則,語言需要單獨實現算法。在這些情況下,您可以做的最好的事情是在您的文檔中宣佈算法的設計是相同的,並確保將來保持並行性。

但是,在重構的世界裏,一個普通的超類並不是唯一的方法。我強烈推薦Martin Fowler的作品:http://refactoring.com/

你沒有說你在用什麼語言來實現它,所以我會認爲它是一個靜態類型的語言,而不是Smalltalk。你可能會考慮一個訪問者模式,但這可能只是兩個類的矯枉過正。委託模式或代理模式也可以工作。

我發現了一個有用的對比頁面代理,外觀和適配器:http://www.netobjectivestest.com/PatternRepository/index.php?title=AdapterVersusProxyVersusFacadePatternComparison

+0

感謝這個,我使用C#。 – Water

相關問題