1.單一職責定義:

這裡所稱之職責即為"功能"。就一個類別來說,單一職責意味著僅有一個引起其變化之原因。

如果有一個類有多個變動原因,那麼帶表此類必須把多餘職責分散給其他類別。

 

2.範例:

假設我們要設計一個通訊介面,此介面要有下列四點:

  • 1.資料發送
  • 2.資料接收
  • 3.網路連線
  • 4.網路斷線 

一般來說我們會這樣設計:

public interface Communication

{

   public void Connect(string addr);

   public void Close();

   public void Send(char c);

   public char Recv();

}

不過此介面存在兩個職責,一個是管理連接(Connect and Close),另一個是資料通信(Send and Recv)。

所以這兩個職責應該要分離才是。

public interface Connection

{

   public void Connect(string addr);

   public void Close();

 

public interface DataChannel

{

   public void Send(char c);

   public char Recv();

}

不過在某種情形下,我們不需要將其分離成兩個介面,就是:

應用程式總是在導致此兩個職責一起變動,此情形下若將其分離會有不必要之複雜性。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

    melomelo1988 發表在 痞客邦 留言(0) 人氣()