天天看點

設計模式-單一職責原則

設計模式-單一職責原則 單一職責原則使用的是建立型模式

建立型模式

建立型模式對類進行抽象

重點,建立型模式能夠将對象的建立和和對象的使用分離。即使用建立型模式能夠使得對象的建立,對象的使用分離。重點在于分離。

什麼是單一職責原則

設計模式有六大基本原則,單一職責原則,裡氏替換原則,依賴倒置原則,接口隔離原則,迪米特法則,開閉原則。 其中建立型模式符合單一職責原則。

單一職責原則

即SRP 使用者角色管理等子產品,使用的是RBAC模型

RBAC 一種以角色為儲存的控制,使用RBAC 不賦予權限,賦予角色,例如windows的使用者管理,使用的是賦予角色,對使用者進行管理,這種方式為RBAC,目的在于使得使用者和權限分離。

設計一個使用者管理,依據單一職責模型,設計以下的結構。

設計模式-單一職責原則

該結構定義一些管理使用者的,增加使用者的一些内容,寫入一個接口中,然後進行實作。

該接口具有以上的問題。 使用者的屬性(是否為注冊使用者,vip使用者等等),使用者的行為(增加使用者,删除使用者)沒有分開。 該接口一團糟! 應該使用者的資訊,使用者的行為抽取為一個接口,然後一個接口繼承這兩個接口 更改的如下所示

設計模式-單一職責原則

why? 為什麼要分離,因為單一職責原則,當使用單一職責原則的時候,每個接口,每個類需要承擔單一的職責,不應該承擔過多的原則,易于維護

核心 ,一個接口隻有一個原則!一個接口隻能負責一件事情,隻有一個原因能引起其變化

實作一個電話接口

設計模式-單一職責原則

這個接口包含兩個職責,協定管理和資料傳送。 dial和chat為通話,該通話和撥打電話,使用了同時都和協定有關系,如果要更改協定,那麼這兩個接口的内容都需要進行更改。由于一個接口存在兩個職責,是以該接口需要劃分為兩個接口

此時存在一個關聯關系,撥打電話和協定的實作,兩者之間存在關聯關系,此關聯關系為靜态關聯

設計模式-單一職責原則

這個類圖完全符合單一職責的原則。每個狀态隻決定一件事情。每個狀态的更改隻改變一件事情。

好處 複雜度降低 可讀性提高 可維護性增強 變更引起的風險降低(因為變更的時候如果每個接口隻負責一個單一的原則,那麼一個接口的修改對其他沒有影響,這樣降低了整體的複雜度)

單一原則同樣适用于方法

刀就是刀,叉就是叉,1就是1,0就是0.沒有中間态,每個方法也同樣的适用于單一原則,每個方法也同樣的隻承擔一個内容。一個作用。

總結

設計模式-單一職責原則

繼續閱讀