介面實作配對
2005 年 12 月 8 日
將每個類別與一個介面配對的做法。因此,您會看到成對的事物 - 可能為 ICustomer 和 Customer 或 Customer 和 CustomerImpl。在許多方面,它呼應了 C/C++ 為每個類別建立標頭檔的習慣,儘管在這種情況下,介面和實作實際上是不同的類型。
這種方法的優點是,您可以透過提供介面的另一種實作,在任何時候完全替換任何東西。
然而,這並不是我曾經很喜歡的技術。在您不會有多個實作時使用介面,是額外的負擔,必須讓所有內容保持同步(儘管好的 IDE 有所幫助)。此外,它會隱藏您實際提供多個實作的情況。
與往常一樣,無論您撰寫的是應用程式類別或函式庫,權衡取捨都是不同的。在應用程式中,如果您曾經需要一個沒有介面的介面,您可以執行 Extract Interface,這樣就完成了。對於已發布的函式庫,您的使用者無法獲得如此快速的回饋,因此讓您的已發布類型成為介面會更有用。然而,在您的 PublishedInterface 中單純模仿實作類別很少是最好的做法。介面應該根據客戶端的需求進行設計,通常這些需求與實作不符。