国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      PHP面向?qū)ο笪宕笤瓌t之單一職責原則(SRP)詳解

PHP面向?qū)ο笪宕笤瓌t之單一職責原則(SRP)詳解

標簽: 發(fā)布日期:2018-04-18 21:57:49 335

本文實例講述了PHP面向?qū)ο笪宕笤瓌t之單一職責原則(SRP)。分享給大家供大家參考,具體如下:

單一職責原則(Single Pesponsibility Principle, SRP)

單一職責有兩個含義: 一個是避免相同的職責分散到不同的類中, 別一個是避免一個類承擔太多職責

為什么要遵守SRP呢?

(1)可以減少類之間的耦合

如果減少類之間的耦合,當需求變化時,只修改一個類,從而也就隔離了變化;如果一個類有多個不同職責,它們耦合在一起,當一個職責發(fā)生變化時,可能會影響到其他職責。

(2)提高類的復用性

修改電腦比修理電視機簡單多了。主要原因就在于電視機各個部件之間的耦合性太高,而電腦則不同,電腦的內(nèi)存、硬盤、聲卡、網(wǎng)卡、鍵盤燈等部件都可以很容易地單獨拆卸和組裝。某個部件壞了,換上新的即可。上面的例子就體現(xiàn)了單一職責的優(yōu)勢。由于使用了單一職責,使得‘組件'可以方便地‘拆卸'和‘組裝'。

不遵守SRP會影響對類的復用性。當只需要用該類的某一個職責時,由于它和其他的職責耦合在一起,也就很難分離出。

遵守SRP在實際代碼開發(fā)中有沒有什么應用?有的。以數(shù)據(jù)持久層為例,所謂的數(shù)據(jù)持久層主要指的是數(shù)據(jù)庫操作,當然,還包括緩存管理等。這時就需要數(shù)據(jù)持久層支持多種數(shù)據(jù)庫。應該怎么做?定義多個數(shù)據(jù)庫操作類?想法已經(jīng)很接近了,再進一步,就是使用工廠模式。

工廠模式(Faction)允許你在代碼執(zhí)行時實例化對象。它之所以被稱為工廠模式是因為它負責‘生產(chǎn)對象'。以數(shù)據(jù)庫為例,工廠需要的就是根據(jù)不同的參數(shù),生成不同的實例化對象。最簡單的工廠就是根據(jù)傳入的類型名實例化對象,如傳入MySQL,就調(diào)用MySQL類并實例化,如果是SQLite,則調(diào)用 SQLite的類并實例化,甚至還可以處理TXT、Execl等‘類數(shù)據(jù)庫'。

工廠類也就是這樣的一個類,它只負責生產(chǎn)對象,而不負責對象的具體內(nèi)容。

以下是示例

定義一個適配器的接口

interface Db_Adpater
{
  /**
   * 數(shù)據(jù)庫連接
   * @param $config 數(shù)據(jù)庫配置
   * @return mixed resource
   */
  public function connect($config);
  /**
   * 執(zhí)行數(shù)據(jù)庫查詢
   * @param $query 數(shù)據(jù)庫查詢的SQL字符串
   * @param $handle 連接對象
   * @return mixed
   */
  public function query($query,$handle);
}