「確定介面是理想選擇,因而應該總是選擇介面而不是具體的類。」這其實是一種誘餌。當然,對於建立類,幾乎在任何時刻,都可以替代為建立乙個介面和乙個工廠。
許多人都掉進了這種**的陷阱,只要有可能就去建立介面和工廠。這種邏輯看起來是因為需要使用不同的具體實現,因此總是應該新增這種抽象性。這實際上已經變成了一種草率的設計優化。
任何抽象性都應該是應真正的需求而產生的。當必須時,你應該重構介面而不是到處新增額外級別的間接性,並由此帶來的額外的複雜性。這種額外的複雜性非常顯著,如果你讓某人去處理這種複雜性,只是因為你意識到由於以防萬一而新增了新介面,而沒有其他更有說服力的原因,那麼好吧,如果我碰上了這種事,那麼就會質疑此人所做的所有設計了。
恰當的原則應該是優先選擇類而不是介面。從類開始,如果介面的必須性變得非常明確,那麼就進行重構。介面是一種重要的工具,但是他們容易被濫用。
物件導向程式設計思想 介面和抽象類
介面抽象類 是否可以被例項化否 否是否可以寫抽象方法是 是是否可以寫普通方法否 是是否可以寫 static 方法是 是是否可以寫 default 方法是 否是否可以寫屬性是 是訪問修飾符都為 public 可以自定義 抽象類描述了 is a 的關係,表示乙個類是什麼,可以解決 復用的問題。典型的場景...
設計原則與思想 介面和抽象類
08 理論五 介面vs抽象類的區別?如何用普通的類模擬抽象類和介面?抽象類和介面能解決什麼程式設計問題?抽象類不允許被例項化,只能被繼承,抽象類 復用,多型性的優雅實現 為什麼需要介面?它能夠解決什麼程式設計問題?介面 不允許例項化,只能被實現 不包含屬性和普通方法,包含抽象方法 靜態方法 defa...
《Java程式設計思想》學習筆記 介面
介面和內部類為我們提供一種將介面與實現分離的更加結構化發方法 將介面從具體的實現中解耦使得介面可以應用於多種不同的具體實現,因此 具有更好的復用性 工廠方法模式,不同的產品可以有不同的實現,不同的工廠可以生成不同的實際產品物件。這樣,產品物件和工廠之間達到了完全的分離解耦,我們可以任意的更換工廠,以...