【建模】面向對象設計原則分析

一、面向對象三大設計原則

       1、針對接口編程,而不是針對實現編程

           可以通過派生接口的類實現(Java中常見)來完成,這樣無需知道具體的實現。可自頂而上的進行設計,也可以自下而上的進行抽取公共部分。

public interface A//接口
{
public:    
    void Move();
    void Fly();
}
//分別從這個接口派生類實現

        在C++類中,可將其進行轉換處理,起到一個函數轉換的作用

void Move_base()

{
     Move();//子類的實現

}

      2、優先使用對象組合,而不是類繼承

          這樣的話,一個對象就把職責分散開來,交給不同的對象來處理
      3、封裝變化點【3】
      使得儘量修改變化地方的修改,解釋如下: 

   //工廠方法模式
   Factory  fac=new Factory (); 
   Animal ani=new Dog(); //如果修改爲Chicken的話,則不需要修改其他代碼,這個是變化的地方
   fac.setAnimal( ani);
   Animal  ani1=fac.createInstance(); //在一個函數體內,或者在其他地方
   Animal  ani2=fac.createInstance(); 

二、五大具體設計原則

      1、單一職責原則(SRP—Single Responsibility Principle)【4】、【5】

          將一個兩個職責接口進行拆分,然後從他們爲派生一個公共的接口

       2、開放—封閉原則(OCP—Open for extension ,Closed for modification Principle)
           對擴展開放,對修改封閉,即加入新的功能時,要不修改原來的組件代碼。

       3、Liskov替換原則(LSP)
           子類必須替換它的基類,其實就是一派生的功能。

       4、依賴倒置原則(DIP—Delpendence Inversion Principle)
            裏面就是Factory Method實現可以做一個解釋。

            a. 高層模塊不依賴於底層模塊,兩者都依賴於抽象

            b. 抽象不應該依賴細節,細節應該依賴抽象。

       5、接口隔離原則(ISP—Interface Segregation Principle)【6】      

            將各種接口分一個類別,然後依賴時,調用各個類別的接口對象

參考:1、面向對象設計模式縱橫談(1)

2、面向對象設計原則六-針對接口編程,而不是針對實現編程

3、淺談設計模式之精髓---封裝變化點

4、單一職責原則—cbf4life

5、設計模式六大原則(1):單一職責原則

6、設計模式六大原則(4):接口隔離原則

7、設計模式與面向對象編程方法的原則

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章