天天看點

java設計模式:單一職責原則了解

首先聲明僅僅是個人了解,可能有不對的地方,謝謝指正!

1,起源:

為了解決問題:如果因需求變更,對類中的某個方法(職責)做了修改,影響了類中其他方法(職責)的使用,因為這個方法的修改,需要代碼更新,重新部署項目。這個類其他方法暫時也不能用了。

2,定義:

一個類如果隻是有且僅有一個因素來引起他的變化,(應用于子產品、類)。拿個類舉例子:類中應該隻有一個方法,完成一項職責。唯一能夠引起這個類變化的因素隻有這項方法(職責)發生了變化。如果一個類中有多個方法,遵循單一職責的話,就是把這個類拆分成多個隻有一個方法的類。

3,優缺點:

優點:降低了類中方法的耦合性,缺點:一個類隻有一個方法會造成大量的類備援。

4,實際情況:

集合多個職責的類:手機類,手機擁有拍照、打電話、發短信、上網、打遊戲....多個功能,明顯違背了單一職責原則,但是手機類的存在很合理,為什麼?

單一職責原則的使用需要分情況而定,如果是類的需求變更頻率較高,則遵守單一職責 原則,比如:工廠模式:手機工廠:手機接口;手機實作類,富士康工廠可以生産多種類型的手機:蘋果手機、華為手機、 如果接到維沃、小米的手機生産訂單,手機生産需求變更,隻需要再增加:維沃手機實作類、小米手機實作類即可 。每種手機都是獨立的手機類。新增加的手機生産線不會影響到原有手機生産線。這一點遵循了設計模式的單一職責原則!

但是所有手機的功能基本都是一樣的:是以每個手機類都是相同的功能方法,這一點違背了單一職責原則!因為現有手機的基本功能需求就是那幾樣基本不會變更了。是以是否遵守單一職責原則需要視具體情況而定!

繼續閱讀