close
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();
}
不過在某種情形下,我們不需要將其分離成兩個介面,就是:
應用程式總是在導致此兩個職責一起變動,此情形下若將其分離會有不必要之複雜性。
全站熱搜