編程思想與生活經驗


1,內聚

程序=數據+操作

       =數據結構+算法(PASCAL之父Nicklaus Wirth)

       =對象+消息

對象是什么?

對象就是保管好自己的東西,做好自己的事情的程序模塊--------這就是內聚

2,依賴

一個對象往往需要跟其他對象打交道,既包括獲取依賴於另一對象,也包括仰賴其他對象的行為,一旦發生便稱為該對象依賴另一對象。只要有一個依賴另一個的現象發生,則這兩者之間存在耦合,比如媽媽和嬰兒。

3,耦合

耦合的程度就是耦合度,也就是雙方依賴的程度,媽媽和嬰兒之間是強耦合,而我們與快遞小哥之間為弱耦合。

4,依賴倒置

高層模塊不應該依賴底層模塊,都依賴與抽象。抽象不應該依賴於細節,細節應該依賴抽象。

舉一個例子:

假設你要買一個IPhone,賣IPhone的老板讓你拿一頭豬跟他換,可是你並沒有養豬,你只會編程。所以你找到一位養豬戶,說給他做一個養豬的APP來換他一頭豬,他說換豬可以,但是得用一條金項鏈來換——所以這里就出現了一連串的對象依賴,從而造成了嚴重的耦合災難。解決這個問題的最好的辦法就是,買賣雙發都依賴於抽象——也就是貨幣——來進行交換,這樣一來耦合度就大為降低了。

5,控制反轉
首先我們要區分兩個角色,server 跟 Client,也就是服務方和客戶方。提供服務端的一方稱為服務方,請求服務的一方稱為客戶方。
 
當我們使用開發框架時,開發框架就是作為服務方,而我們自己編寫的業務應用就是客戶方。當Client調用server時,這個叫做一般的控制;而當server調用Client時,就是我們所說的控制反轉,同時我們也將這個調用稱為“回調”。控制反轉跟依賴倒置都是一種編程思想,依賴倒置着眼於調用的形式,而控制反轉則着眼於程序流程的控制權。一般來說,程序的控制權屬於server,而一旦控制權交到Client,就叫控制反轉。比如你去下館子,你是Client餐館是server。你點菜,餐館負責做菜,程序流程的控制權屬於server;而如果你去自助餐廳,程序流程的控制權就轉到Client了,也就是控制反轉。
 
總結出開發框架與類庫的區別:使用開發框架時,框架掌握程序流程的控制權,而使用類庫時,則是應用程序掌握程序流程的控制權。或者說,使用框架時,程序的主循環位於框架中,而使用類庫時,程序的主循環位於應用程序之中。框架會回調應用程序,而類庫則不會回調應用程序。
 
6,依賴注入
A對象依賴於B對象,等價於A對象內部存在對B對象的“調用”,而前提是A對象內部拿到了B對象的引用。B對象的引用的來源無非有以下幾種:A對象內部創建(無論是作為字段還是作為臨時變量)、構造器注入、屬性注入、方法注入。后面三種方式統稱為“依賴注入”。

作者:在好
鏈接: 編程思想里面,何謂解耦? - 在好的回答
來源:知乎

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM