間接不是抽象
這篇文章認為介面interface代表的間接和abstract代表的抽象並不是一回事,間接是為了分離,松耦合,而抽象是為了將細節剝離。這是軟體設計中兩個不同維度。然後他談了這兩種情況的四個組合:
沒有間接但是又抽象,也就是直接但抽象,他以String為例子,字串很直接但很抽象,可以代表很多東西:人的姓名、訊息等等,但是直接依賴java.lang.String型別的程式碼不能移植到Swift / Go / C#。
依賴倒置原則:高階模組不應該依賴於低階模組。兩者都應該取決於抽象。與直接和間接無關。
什麼時候使用間接?
- 您的元件因不同原因而發生變化時,在它和其他每個元件之間使用間接。
- 當您的元件無關緊要時,或者當它們不需要更改時,可以使它們直接相互關聯。
- 如果您不知道某個元件是否會發生變化,使用直接。
什麼時候使用抽象?
- 您不需要解決通用問題時,讓元件具體化。
- 當您需要透過多種排列解決非常類似的問題時,讓元件變得抽象。
- 如果您不知道是否需要解決一系列問題,就使用具體。
讓您的軟體儘可能簡單,直到它變得更加複雜。無論是開發還是使用,複雜的軟體都是非常昂貴和痛苦的。
相關文章
- GRASP之間接模式 - Kamil Grzybek模式
- 蒙特間接蒸發冷卻系統:間接蒸發,自然冷卻,低耗節能
- 介面、抽象類、普通類之間的關係抽象
- 星閃:咫尺之間,聯接智慧世界
- 【抽象那些事】不完整的抽象&多方面抽象&未用的抽象&重複的抽象抽象
- 抽象方法和抽象類抽象
- gRPC為什麼使用截止時間而不是超時時間?RPC
- 介面的行為抽象和抽象類的行為抽象抽象
- 抽象抽象
- 變數的賦值 指標間接賦值變數賦值指標
- 抽象合集抽象
- 抽象類抽象
- java抽象Java抽象
- PHP 抽象類繼承抽象類時的注意點PHP 抽象類繼承抽象類時的注意點PHP抽象繼承
- easywechat 對接企業打款到銀行卡金鑰引數不是有效的公鑰
- 如果當前時間不是第一次活動的時間,如何修正?
- 關於西門子間接定址的一些理解
- ARC下OC物件和CF物件之間的橋接(bridge)物件橋接
- 你的Oracle是不是這個時間發生的故障?Oracle
- 人間演算法題:到底是不是一個環?演算法
- Java 抽象類Java抽象
- 14、抽象類抽象
- Python抽象類Python抽象
- 抽象的力量抽象
- 暫存器定址和暫存器間接定址的區別
- 回望2022,拒絕間接性努力【面試題第一彈】面試題
- 元宇宙是一個時間點而不是一處地方RQ元宇宙
- Java中抽象類和介面的介紹及二者間的區別Java抽象
- 關於Java中的物件、類、抽象類、介面、繼承之間的聯絡Java物件抽象繼承
- 設計模式系列之代理模式(Proxy Pattern)——物件的間接訪問設計模式物件
- 中大型公司測試經歷:接觸廣,深入要時間
- 21-抽象類抽象
- 抽象類和介面抽象
- 抽象工廠模式抽象模式
- 什麼是抽象抽象
- 抽象類與介面抽象
- 33_抽象類抽象
- 8 python 抽象類Python抽象