單一職責原則
優勢:
因為物件導向的程式設計是推崇面向介面的程式設計的,我們對外暴露的方法也最好是以介面的形式定義,再由具體的類進行實現,諸多的好處就不再贅述,我們下面就基於乙個簡單的場景進行設計,體現單一職責的好處:
比如pear是一家電子產品商,它要生產pad,phone,watch等裝置,但是有一些重複的功能,如果分別設計一套,很顯然並不划算,那麼介面定義上我們就可以根據功能劃分設定單一職責的介面:
介面的定義
//可以撥打**
inte***ce
callable
//可以觸控控制
inte***ce
touchable
//可以訊息提醒
inte***ce
messagepromptable
//可以接入鍵盤
inte***ce
keyboardmatchable
實現介面的類依舊單一職責class
standardcall
implements
callable
}class
standardtouch
implements
touchable
}class
standardpromt
implements
messagepromptable
}class
standardmatch
implements
keyboardmatchable
}
產品的生產//在宣告這台手機時我們就明確知道了它的功能
class myphone implements callable,messagepromptable,touchable
@override
public
void
prompt()
@override
public
void
touch()
}public
class
srptest
}
class
mypad
implements
touchable,keyboardmatchable
@override
public
void touch()
}
通過上面額例子,可以有乙個更清晰的理解,其實如果單個介面都提供乙個實現類會導致類額數量很龐大,使用起來很不方便,所以我們可以整合一些功能。簡而言之:
對於單一職責原則,介面一定要做到單一職責,類的設計盡量做到只有乙個原因引起變化
class
callandprompt
implements
callable,messagepromptable
@override
public
void prompt()
}//在宣告這台手機時我們就明確知道了它的功能
class
myphone
implements
callable,messagepromptable,touchable
@override
public
void prompt()
@override
public
void touch()
}
從上面的例子,可能你會更理解我的總結。但是原則這個東西要遵守,但是沒必要死守。在實際的設計中還是要學會變通。畢竟經典的設計模式也不總是遵守這些設計原則,但他們依舊被廣泛地應用到實際當中,而且表現還不錯 設計模式原則 單一職責原則
定義 乙個物件應該只包含單一的職責,並且該職責被完整地封裝在乙個類中。即 不要存在多於乙個導致類變更的原因。通俗的說,就是乙個類只負責一項職責。問題由來 類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...