物件導向簡單原則)

來源:互聯網
上載者:User
一、 "開放-封閉"原則(OCP) 
Open-Closed Principle原則講的是:一個軟體實體應當對擴充開放,對修改關閉。 

優點: 
  通過擴充已有軟體系統,可以提供新的行為,以滿足對軟體的新的需求,使變化中的軟體有一定的適應性和靈活性。 
  已有軟體模組,特別是最重要的抽象層模組不能再修改,這使變化中的軟體系統有一定的穩定性和延續性。 

二、 裡氏代換原則(LSP) 

Liskov Substitution Principle(裡氏代換原則):子類型(subtype)必須能夠替換它們的基底類型。 

三、 依賴倒置原則(DIP) 
  
依賴倒置(Dependence Inversion Principle)原則講的是:要依賴於抽象,不要依賴於具體。 

簡單的說,依賴倒置原則要求用戶端依賴於抽象耦合。原則表述: 

抽象不應當依賴於細節;細節應當依賴於抽象; 
要針對介面編程,不針對實現編程。 
 
使用傳統過程化程式設計所建立的依賴關係,策略依賴於細節,這是糟糕的,因為策略受到細節改變的影響。依賴倒置原則使細節和策略都依賴於抽象,抽象的穩定性決定了系統的穩定性。 

四、 介面隔離原則(ISP) 

介面隔離原則(Interface Segregation Principle)講的是:使用多個專門的介面比使用單一的總介面總要好。換而言之,從一個客戶類的角度來講:一個類對另外一個類的依賴性應當是建立在最小介面上的。 

過於臃腫的介面是對介面的汙染。不應該強迫客戶依賴於它們不用的方法。 

實現方法: 
1、 使用委託分離介面 
2、 使用多重繼承分離介面 

五、 合成/彙總複用原則(CARP) 

合成/彙總複用原則(Composite/Aggregate Reuse Principle或CARP)經常又叫做合成複用原則(Composite Reuse Principle或CRP),就是在一個新的對象裡面使用一些已有的對象,使之成為新對象的一部分;新對象通過向這些對象的委派達到複用已有功能的目的。 

簡而言之,要盡量使用合成/彙總,盡量不要使用繼承。 

區分"Has-A"與"Is-A" 

"Is-A"是嚴格的分類學意義上定義,意思是一個類是另一個類的"一種"。而"Has-A"則不同,它表示某一個角色具有某一項責任。 

導致錯誤的使用繼承而不是合成/彙總的一個常見的原因是錯誤的把"Has-A"當作"Is-A"。 

例如: 
 
實際上,僱員、經理、學生描述的是一種角色,比如一個人是"經理"必然是"僱員",另外一個人可能是"學生僱員",在上面的設計中,一個人無法同時擁有多個角色,是"僱員"就不能再是"學生"了,這顯然是不合理的。 

錯誤源於把"角色"的等級結構與"人"的等級結構混淆起來,誤把"Has-A"當作"Is-A"。解決辦法: 
 

六、 迪米特法則(LoD) 

迪米特法則(Law of Demeter或簡寫LoD)又叫最少知識原則(Least Knowledge Principle或簡寫為LKP),也就是說,一個對象應當對其它對象有儘可能少的瞭解。 

其它表述: 
  只與你直接的朋友們通訊 
  不要跟"陌生人"說話 
  每一個軟體單位對其它的單位都只有最少的知識,而且局限於那些與本單位密切相關的軟體單位。 

迪米特法則與設計模式 
Facade模式、Mediator模式 

使民無知 
《老子》第三章曰:"是以聖人之治,虛其心,實其腹,弱其志,常使民無知無欲。"使被"統治"的對象"愚昧"化,處於"無知"的狀態,可以使"統治"的成本降低。 
所謂"最少知識"原則,實際上便是老子的"使民無知"的統治之術。 

不相往來 
《老子》云:"小國寡民……鄰國相望,雞犬之聲相聞,民至老死,不相往來。"將被統治的對象隔離開來,使它們沒有直接的通訊,可以達到分化瓦解,繼而分而治之的效果。迪米特法則與老子的"小國寡民"的統治之術不謀而合。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.