“確定接口是理想選擇,因而應該總是選擇接口而不是具體的類。”這其實是一種誘餌。當然,對于創建類,幾乎在任何時刻,都可以替代為創建一個接口和一個工廠。
許多人都掉進了這種誘惑的陷阱,只要有可能就去創建接口和工廠。這種邏輯看起來是因為需要使用不同的具體實現,因此總是應該添加這種抽象性。這實際上已經變成了一種草率的設計優化。
任何抽象性都應該是應真正的需求而產生的。當必須時,你應該重構接口而不是到處添加額外級別的間接性,并由此帶來的額外的復雜性。這種額外的復雜性非常顯著,如果你讓某人去處理這種復雜性,只是因為你意識到由于以防萬一而添加了新接口,而沒有其他更有說服力的原因,那么好吧,如果我碰上了這種事,那么就會質疑此人所做的所有設計了。
恰當的原則應該是優先選擇類而不是接口。從類開始,如果接口的必須性變得非常明確,那么就進行重構。接口是一種重要的工具,但是他們容易被濫用。