3.七大軟體架構設計原則
阿新 • • 發佈:2021-09-15
1.開閉原則
概念
- 一個軟體實體(類、模板和函式),應對擴充套件開放,對修改關係(通過配置檔案修改)。
- 所謂開閉,也正是對擴充套件和修改兩個行為的一個原則。
- 核心:面向抽象原則:用抽象構建框架,用實現擴充套件細節,提高軟體的可複用性和可維護性。
eg:建立商品介面,並實現商品介面,新增折扣優惠方法
方案1:將修改置於介面,則每個實現類都要新增方法實現
方案2:再寫一個處理優惠的邏輯類
- 優點:易提高軟體的可複用性和維護性
- 缺點:易引起類爆炸
方案3:利用IOC框架(Spring)動態建立物件
public static void main(String []args){ //建立Spring容器,解析xml檔案; // ApplicationContext為一介面,new後面的是它的實現類,引數為xml配置檔案 ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml"); //根據Bean的id查詢物件 HelloBean helloBean=(HelloBiz)context.getBean("helloBean"); System.out.println(helloBean. getPrice()); } }
2.依賴倒置原則(Dependence Inversion Principle)
概念
- 底層模組:不可分割的邏輯
- 高層模組:邏輯的再組裝
- 高層模組不應該依賴底層模組
- 兩者都應依賴其抽象不應依賴其細節
- 細節應該依賴抽象
什麼是抽象
抽象就是指介面或抽象類,兩者都是不能直接被例項化的
什麼是細節
細節就是實現類,實現介面或繼承抽象類而產生的類就是細節
特點就是可以直接被例項化
依賴倒置原則
- 模組間的依賴通過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是通過介面或抽象類產生的;
- 介面或抽象類不依賴於實現類;
- 實現類依賴介面或抽象類。
IOC (Inverse of Control) 控制反轉
- 設計好的類由系統控制,而不是在類的內部控制,稱為控制反轉。
- 建立具體物件的控制權交給配置檔案(Java或者C#通過反射機制動態建立物件)。
控制反轉&依賴注入
控制反轉IoC
- 物件的控制權進行轉移
eg. 轉移交給了IoC容器,它就是一個建立工廠。
需要的物件可以通過配置檔案建立
依賴關係發生變化:原先的依賴關係消失,因為它們都依賴IoC容器。通過IoC容器建立它們之間的關係。
依賴注入
所謂依賴注入,就是由IoC容器在執行期間,動態地將某種依賴關係注入到物件之中。
注入方式:
- 建構函式注入
- setter注入
- 基於註解的注
總結
依賴倒置的基本要求:
- 每個類儘量都有介面或抽象類,或者抽象類和介面兩者都具備
- 介面和抽象類都是屬於抽象的,有了抽象才可能依賴倒置。
- 依賴倒置原則的本質就是通過抽象(介面或抽象類)使各個類或模組的實現彼此獨立,不互相影響,實現模組間的鬆耦合
- 變數型別儘量是介面或者是抽象類
- 任何類都不應該從具體類派生。(不一定)
- 儘量不要覆寫基類的方法:
如果基類是一個抽象類,而且這個方法已經實現了,子類儘量不要覆寫。類間依賴的是抽象,覆寫了抽象方法,對依賴的穩定性會產生一定的影響。