設計模式 單一職責原則

2021-09-01 02:57:31 字數 1546 閱讀 3318

設計模式-單一職責原則

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

建立型模式對類進行抽象

重點,建立型模式能夠將物件的建立和和物件的使用分離。即使用建立型模式能夠使得物件的建立,物件的使用分離。重點在於分離。

設計模式有六大基本原則,單一職責原則,黎克特制替換原則,依賴倒置原則,介面隔離原則,迪公尺特法則,開閉原則。

其中建立型模式符合單一職責原則。

即srp 使用者角色管理等模組,使用的是rbac模型

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

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

該結構定義一些管理使用者的,增加使用者的一些內容,寫入乙個介面中,然後進行實現。

該介面具有以上的問題。

使用者的屬性(是否為註冊使用者,vip使用者等等),使用者的行為(增加使用者,刪除使用者)沒有分開。

該介面一團糟!

應該使用者的資訊,使用者的行為抽取為乙個介面,然後乙個介面繼承這兩個介面

更改的如下所示

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

核心 ,乙個介面只有乙個原則!乙個介面只能負責一件事情,只有乙個原因能引起其變化

這個介面包含兩個職責,協議管理和資料傳送。

dial和chat為通話,該通話和撥打**,使用了同時都和協議有關係,如果要更改協議,那麼這兩個介面的內容都需要進行更改。由於乙個介面存在兩個職責,所以該介面需要劃分為兩個介面

此時存在乙個關聯關係,撥打**和協議的實現,兩者之間存在關聯關係,此關聯關係為靜態關聯

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

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

刀就是刀,叉就是叉,1就是1,0就是0.沒有中間態,每個方法也同樣的適用於單一原則,每個方法也同樣的只承擔乙個內容。乙個作用。

this is sometimes hard to see

這個有時候很難說!

對介面盡量做到單一原則,類的做到引起乙個原因引起的變化。

www.iming.info

設計模式原則 單一職責原則

定義 乙個物件應該只包含單一的職責,並且該職責被完整地封裝在乙個類中。即 不要存在多於乙個導致類變更的原因。通俗的說,就是乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 ...

設計模式原則 單一職責原則

對類來說的,即乙個類應該只負責一項職責。假如類a負責多項職責,當其中一項職責需求發生變更時,可能對其他職責的執行造成影響。例如 類a負責實現 訂單資料持久化 職責 和 使用者資料持久化 職責,那麼當我們需要修改 使用者資料持久化 需求時,由於 糅雜在乙個類裡,可能會對 訂單資料持久化 的職責造成影響...

設計模式原則 單一職責原則

1.概念 對類來說的,即乙個類應該只負責一項職責。如類a負責兩個不同職責 職責1,職責2。當職責1需求變更而改變a時,可能造成職責2執行錯誤,所以需要將類a的粒度分解為a1,a2。2.問題的提出 package com.atguigu.principle.singleresponsibility p...