1. 程式人生 > 其它 >3.七大軟體架構設計原則

3.七大軟體架構設計原則

1.開閉原則

概念

  1. 一個軟體實體(類、模板和函式),應對擴充套件開放,對修改關係(通過配置檔案修改)。
  2. 所謂開閉,也正是對擴充套件和修改兩個行為的一個原則。
  3. 核心:面向抽象原則用抽象構建框架,用實現擴充套件細節,提高軟體的可複用性和可維護性。

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)

概念

  • 底層模組:不可分割的邏輯
  • 高層模組:邏輯的再組裝
  1. 高層模組不應該依賴底層模組
  2. 兩者都應依賴其抽象不應依賴其細節
  3. 細節應該依賴抽象
什麼是抽象

抽象就是指介面或抽象類,兩者都是不能直接被例項化的

什麼是細節

細節就是實現類,實現介面或繼承抽象類而產生的類就是細節
特點就是可以直接被例項化

依賴倒置原則
  1. 模組間的依賴通過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是通過介面或抽象類產生的;
  2. 介面或抽象類不依賴於實現類;
  3. 實現類依賴介面或抽象類。
IOC (Inverse of Control) 控制反轉
  1. 設計好的類由系統控制,而不是在類的內部控制,稱為控制反轉。
  2. 建立具體物件的控制權交給配置檔案(Java或者C#通過反射機制動態建立物件)。

控制反轉&依賴注入

控制反轉IoC

  • 物件的控制權進行轉移

eg. 轉移交給了IoC容器,它就是一個建立工廠。
需要的物件可以通過配置檔案建立
依賴關係發生變化:原先的依賴關係消失,因為它們都依賴IoC容器。通過IoC容器建立它們之間的關係。

依賴注入

所謂依賴注入,就是由IoC容器在執行期間,動態地將某種依賴關係注入到物件之中

注入方式:

  1. 建構函式注入
  2. setter注入
  3. 基於註解的注

總結

依賴倒置的基本要求:
  1. 每個類儘量都有介面或抽象類,或者抽象類和介面兩者都具備
  2. 介面和抽象類都是屬於抽象的,有了抽象才可能依賴倒置。
  3. 依賴倒置原則的本質就是通過抽象(介面或抽象類)使各個類或模組的實現彼此獨立,不互相影響,實現模組間的鬆耦合
  • 變數型別儘量是介面或者是抽象類
  • 任何類都不應該從具體類派生。(不一定)
  • 儘量不要覆寫基類的方法:
    如果基類是一個抽象類,而且這個方法已經實現了,子類儘量不要覆寫。類間依賴的是抽象,覆寫了抽象方法,對依賴的穩定性會產生一定的影響。

3.單一職責原則

4.介面隔離原則

5.迪米特法則

6.里氏替換原則