間接不是抽象

banq發表於2018-11-02

這篇文章認為介面interface代表的間接和abstract代表的抽象並不是一回事,間接是為了分離,松耦合,而抽象是為了將細節剝離。這是軟體設計中兩個不同維度。然後他談了這兩種情況的四個組合:

沒有間接但是又抽象,也就是直接但抽象,他以String為例子,字串很直接但很抽象,可以代表很多東西:人的姓名、訊息等等,但是直接依賴java.lang.String型別的程式碼不能移植到Swift / Go / C#。

依賴倒置原則:高階模組不應該依賴於低階模組。兩者都應該取決於抽象。與直接和間接無關。

什麼時候使用間接?
  1. 您的元件因不同原因而發生變化時,在它和其他每個元件之間使用間接。
  2. 當您的元件無關緊要時,或者當它們不需要更改時,可以使它們直接相互關聯。
  3. 如果您不知道某個元件是否會發生變化,使用直接。


什麼時候使用抽象?
  1. 您不需要解決通用問題時,讓元件具體化。
  2. 當您需要透過多種排列解決非常類似的問題時,讓元件變得抽象。
  3. 如果您不知道是否需要解決一系列問題,就使用具體。


讓您的軟體儘可能簡單,直到它變得更加複雜。無論是開發還是使用,複雜的軟體都是非常昂貴和痛苦的。

相關文章