物件導向五大設計原則 單一職責原則

2021-10-10 02:11:18 字數 1079 閱讀 3735

1、什麼是單一職責原則

單一職責(single-responsibility)原則是指:乙個類有且只有乙個職責。如果這個類需要變更,那麼有且只有乙個讓其變化的原因。

2、過多的職責示例 – 山寨手機

山寨手機功能眾多,將多種功能整合到乙個主機板上。但是各功能都不如專業裝置。

當某個功能的市場需求發生變化時,不得不重新製板。

3、過多的職責例項 – 資料儲存

乙個類負責了接收資料、校驗資料、鏈結資料庫、儲存資料這麼多職責,當其中乙個職責發生變化的時候,這個類不得不發生變化。

4、單一職責原理

如果乙個類承擔的職責過多,就等於把這些職責耦合在一起了。乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當發生變化時,設計會遭受到意想不到的破壞。而如果想要避免這種現象的發生,就要盡可能的遵守單一職責原則。此原則的核心就是不同職責間解耦和增強單一職責內聚性。

5、職責的拆分-聚合

5.1、職責拆分:

將不同職責拆分,將同一職責內聚至乙個類中,這樣系統將產生粒度更小的類。

5.2、職責聚合:

如果不把職責單一的類進行聚合,將給客戶端造成高使用成本和增加複雜度。使用前面學到的知識將其聚合:裝飾器模式、外觀模式、責任鏈模式、觀察者模式、狀態模式將它們聚合

裝飾器模式:

將不同職責的類根據裝飾器模式進行解耦拆分,再使用裝飾器擴充套件功能的方式進行聚合。

外觀模式:

通過外觀模式,將不同職責的類聚合址外觀模式類中,外觀模式對客戶端提供簡單的介面呼叫

責任鏈模式:

將不同職責的類,通過責任鏈模式串成乙個鏈條,讓不同職責的類功能來傳遞、處理訊息

觀察者模式:

將不同職責的類作為拆分為不同的觀察者,讓被觀察中通知觀察者處理各自的職責。

狀態模式:

將不同職責的類解耦為不同的狀態,在不同的狀態下,處理不同的職責

物件導向五大原則之單一職責原則

單一職責原則 single pesponsibility principle,srp 可以理解為 分工明確,該是誰做的事情,就是誰做.安安分分的完成自己的任務即可.比如controller層和model層,該是資料處理就處理資料,該是整合資料就整合資料.在php核心技術與最佳實踐一書中有說到 單一職...

物件導向設計原則 單一職責原則

單一職責原則是最簡單的物件導向設計原則,它用於控制類的粒度大小。單一職責原則定義如下 單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領 域中的相應職責,或者可以定義為 就乙個類而言,應該只有乙個引起它變化的原因。單一職責原則告訴我們 乙個類...

物件導向設計原則 單一職責原則 SRP

晚 上在宿舍把webcast翻出來,聽了李建忠講的關於物件導向設計的幾天基本設計原則的課,半懂非懂聽了下來,聽完之後除了茫然還是茫然!也好,只有這樣才能知道自己所知甚淺,所學甚糙!革命遠未成功,吾須戒驕戒躁!ps 個人覺得李建忠講課水平一般,可能他是乙個非常好的程式設計師,但不是乙個好的講課員,大概...