在開發的時候,是不是任何**都要只依賴介面,完全不依賴實現程式設計呢?
做任何事情都要講求乙個「度」,過度使用這條原則,非得給每個類都定義介面,介面滿天飛,也會導致不必要的開發負擔。至於什麼時候,該為某個類定義介面,實現基於介面的程式設計,什麼時候不需要定義介面,直接使用實現類程式設計,我們做權衡的根本依據,還是要回歸到設計原則誕生的初衷上來。只要搞清楚了這條原則是為了解決什麼樣的問題而產生的,你就會發現,很多之前模稜兩可的問題,都會變得豁然開朗。
這條原則的設計初衷是,將介面和實現相分離,封裝不穩定的實現,暴露穩定的介面。上游系統面向介面而非實現程式設計,不依賴不穩定的實現細節,這樣當實現發生變化的時候,上游系統的**基本上不需要做改動,以此來降低**間的耦合性,提高**的擴充套件性。
從這個設計初衷上來看,如果在我們的業務場景中,某個功能只有一種實現方式,未來也不可能被其他實現方式替換,那我們就沒有必要為其設計介面,也沒有必要基於介面程式設計,直接使用實現類就可以了。
除此之外,越是不穩定的系統,我們越是要在**的擴充套件性、維護性上下功夫。相反,如果某個系統特別穩定,在開發完之後,基本上不需要做維護,那我們就沒有必要為其擴充套件性,投入不必要的開發時間。
Q10 我們是否只需要為已有客戶工作
一家大公司的 ceo發表以下言論 要想在生意上成功,你只需要的是顧客。你不需要任何關於如何管理的麻煩的理論與概念,你甚至不必解決你的所有問題或提高效率。所有你需要的只是為已有顧客做得更好和更多。這個言論從整體上來看是前後矛盾的,因為如果不去注重生產效率和管理能力,是無法做到服務好目標市場的,哪怕只是...
定義類和介面
定義類和介面 在 f 中,有兩種方式為函式和類的成員定義引數 curried 風格,成員可以散 partially 應用,元組 tuple 風格,所有成員都必須一次給定。定義類時,如使用元組風格,c 客戶端可以更容易使用這樣的類。看下面的例子,在 f 中定義乙個類,其中有乙個curried 風格定義...
泛型類介面定義
在使用泛型定義類的過程中遇到了不少問題,特記錄如下 定義最基本的泛型類如下 其實最簡單的只需要新增,就表示泛型類了,可在使用的過程中 pl.datalist new list 總是提示錯誤,編譯不通過,說是必須是類才可以,於是修改如下 public abstract class getdatabas...