Java與設計模式(三)設計原則--單一職責原則

一、定義

單一職責原則是最簡單的面向對象設計原則,它用於控制類的粒度大小。單一職責原則定義如下: 單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的相應職責,或者可以定義爲:就一個類而言,應該只有一個引起它變化的原因。

單一職責原則告訴我們:一個類不能太“累”!在軟件系統中,一個類(大到模塊,小到方法)承擔的職責越多,它被複用的可能性就越小,而且一個類承擔的職責過多,就相當於將這些職責耦合在一起,當其中一個職責變化時,可能會影響其他職責的運作,因此要將這些職責進行分離,將不同的職責封裝在不同的類中,即將不同的變化原因封裝在不同的類中,如果多個職責總是同時發生改變則可將它們封裝在同一類中。+

單一職責原則是實現高內聚、低耦合的指導方針,它是最簡單但又最難運用的原則,需要設計人員發現類的不同職責並將其分離,而發現類的多重職責需要設計人員具有較強的分析設計能力和相關實踐經驗。

二、單一職責優點

  • 可以降低類的複雜度,一個類只負責一項職責,其邏輯肯定要比負責多項職責簡單的多;
  • 提高類的可讀性,提高系統的可維護性;
  • 變更引起的風險降低,變更是必然的,如果單一職責原則遵守的好,當修改一個功能時,可以顯著降低對其他功能的影響。

需要說明的一點是單一職責原則不只是面向對象編程思想所特有的,只要是模塊化的程序設計,都適用單一職責原則。

class Animal{  
public void breathe(String animal){  
System.out.println(animal+"用肺呼吸");  
}  

public void breathe2(String animal){  
System.out.println(animal+"有鰓會吸");  
}  
}  

public class Client{  
public static void main(String[] args){  
Animal animal = new Animal();  
animal.breathe("牛");  
animal.breathe("羊");  
animal.breathe("豬");  
animal.breathe2("魚");  
}  
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章