1. 程式人生 > 實用技巧 >基礎原則之單一職責原則

基礎原則之單一職責原則

一、什麼是SRP

  SRP是(Single-Responsibility Principle)"單一職責原則"的簡稱:一個類只有一個促使它變化的原因。所謂職責,我們可以理解它為功能,就是設計的這個類功能應該只有一個,而不是兩個或更多。也可以理解為引用變化的原因,當你發現有兩個變化會要求我們修改這個類,那麼你就要考慮撤分這個類了。"就像每個學生都要上多門課程,如果"“就像一個人身兼數職,而這些事情相互關聯不大,,甚至有衝突,那他就無法很好的解決這些職責,應該分到不同的人身上去做才對。”

二、SRP原理: 案例一:實體類。   這是一個員工類,表示員工的基本資訊。其中Name,FirstName,LastName違回了SRP原則。
internal class Employee
    {
        public string Name;
        public string FirstName;
        public string LastName;
        public string Sex;
        //...
    }

將Name,FirstName,LastName封裝.

 internal class EmployeeName
{
public string Name;
public string FirstName;
public string LastName;
}

  改建好後Employee類如下:

當然當有某個類不再承擔足夠多的職責,不再有單獨存在的理由時,就可以採用內部類,將子類(EmployeeName)塞到最常使用它的類中去。
    internal class Employee
{
public EmployeeName Name;
public string Sex;
internal class EmployeeName
{
public string Name;
public string FirstName;
public string LastName;
}
}

三、SRP優點:

  消除耦合,減少程式碼之間的依賴性 四、使用SRP注意點:   1、一個合理的類,應該僅有一個引起它變化的原因,即單一職責SRP;
  2、在沒有變化徵兆的情況下應用SRP或其他原則是不明智的;
  3、在需求實際發生變化時就應該應用SRP等原則來重構程式碼;
  4、使用測試驅動開發會迫使我們在設計出現臭味之前分離不合理程式碼;
  5、如果測試不能迫使職責分離,僵化性和脆弱性的臭味會變得很強烈,那就應該用Facade或Proxy模式對程式碼重構;