間接不是抽象
這篇文章認為介面interface代表的間接和abstract代表的抽象並不是一回事,間接是為了分離,松耦合,而抽象是為了將細節剝離。這是軟體設計中兩個不同維度。然後他談了這兩種情況的四個組合:
沒有間接但是又抽象,也就是直接但抽象,他以String為例子,字串很直接但很抽象,可以代表很多東西:人的姓名、訊息等等,但是直接依賴java.lang.String型別的程式碼不能移植到Swift / Go / C#。
依賴倒置原則:高階模組不應該依賴於低階模組。兩者都應該取決於抽象。與直接和間接無關。
什麼時候使用間接?
- 您的元件因不同原因而發生變化時,在它和其他每個元件之間使用間接。
- 當您的元件無關緊要時,或者當它們不需要更改時,可以使它們直接相互關聯。
- 如果您不知道某個元件是否會發生變化,使用直接。
什麼時候使用抽象?
- 您不需要解決通用問題時,讓元件具體化。
- 當您需要透過多種排列解決非常類似的問題時,讓元件變得抽象。
- 如果您不知道是否需要解決一系列問題,就使用具體。
讓您的軟體儘可能簡單,直到它變得更加複雜。無論是開發還是使用,複雜的軟體都是非常昂貴和痛苦的。
相關文章
- GRASP之間接模式 - Kamil Grzybek模式
- 蒙特間接蒸發冷卻系統:間接蒸發,自然冷卻,低耗節能
- 間接獲取flash主版本號
- 介面、抽象類、普通類之間的關係抽象
- 抽象類、抽象欄位、抽象方法抽象
- 星閃:咫尺之間,聯接智慧世界
- 【抽象那些事】不完整的抽象&多方面抽象&未用的抽象&重複的抽象抽象
- 抽象方法和抽象類抽象
- 抽象類和抽象方法抽象
- 變數的賦值 指標間接賦值變數賦值指標
- java抽象類和抽象方法Java抽象
- gRPC為什麼使用截止時間而不是超時時間?RPC
- 抽象抽象
- 介面的行為抽象和抽象類的行為抽象抽象
- 蘋果間接承認iOS系統中留有後門蘋果iOS
- java抽象Java抽象
- 抽象物件抽象物件
- 抽象合集抽象
- 抽象類抽象
- PostgreSQL10.0preview效能增強-間接索引(secondaryindex)SQLView索引Index
- 關於西門子間接定址的一些理解
- PHP 抽象類繼承抽象類時的注意點PHP 抽象類繼承抽象類時的注意點PHP抽象繼承
- 你的Oracle是不是這個時間發生的故障?Oracle
- 人間演算法題:到底是不是一個環?演算法
- 巨人網路確認間接持股雲遊戲平臺海馬雲遊戲
- 暫存器定址和暫存器間接定址的區別
- ARC下OC物件和CF物件之間的橋接(bridge)物件橋接
- 如何評估網路營銷廣告間接效果-歸因分析
- c# abstract抽象類及抽象方法_繼承C#抽象繼承
- Java 抽象類Java抽象
- 抽象的力量抽象
- 14、抽象類抽象
- 何時抽象抽象
- 關於抽象抽象
- java 抽象方法Java抽象
- 抽象 與 介面抽象
- 物件包裝器類之間的比較用equals()而不是==物件
- PHP 抽象類繼承抽象類時的注意點PHP抽象繼承