1. 程式人生 > 實用技巧 >C# 設計原則-單一職責原則

C# 設計原則-單一職責原則

  單一職責原則,全稱Single Responsibility Principle,英文縮寫SRP。

  簡單來說,就是一個類應該只有一個變化的原因,在一個類裡,只負責一個職責。

  如果一個類需要修改,那麼就是因為其職責發生變化這個原因才需要修改,如果因為其它原因而去修改,那這個類就是負責了多個職責。

  這裡定義一個Pen類,它有Write寫字的方法。

public class Pen
{
    public void Write()
    {
        Console.WriteLine("寫字");
    }
}

public static void Main(string
[] args) { Pen pen = new Pen(); pen.Write(); }

  如果想定義用不同顏色的筆來寫,這個設計就滿足不了。比如說,用黑筆和紅筆,這裡就具有兩個職責,一個是寫黑色字,一個是寫紅色字。下面修改方法來滿足設計原則。

第一種

public class Pen
{
    public void Write(String color)
    {
        if (color == "black")
        {
            Console.WriteLine("寫黑字");
        }
        else
if (color == "red") { Console.WriteLine("寫紅字"); } } }

  這樣讓Write方法可以同時寫黑字和紅字。設計上,Write可以寫不同的字,Write是隻有一個寫字的職責。

第二種

public class Pen
{
    public void WriteBlack()
    {
        Console.WriteLine("寫黑字");

    }

    public void WriteRed()
    {
        Console.WriteLine(
"寫紅字"); } }

  在Pen類中定義WriteBlack和WriteRed兩個方法。設計上,Pen類可以寫黑字和紅字,Pen是隻有一個寫字的職責。

第三種

public class BlackPen
{
    public void Write()
    {
        Console.WriteLine("寫黑字");

    }
}

public class RedPen
{
    public void Write()
    {
        Console.WriteLine("寫紅字");

    }
}

  定義BlackPen和RedPen,每種筆都可以寫字。設計上,每種顏色的筆寫對應顏色的字,每個類都只有一個寫字的職責。

總結

  單一職責原則的重點在於職責的劃分,通過職責的細化,體現高內聚的優點,讓各個模組更加清晰,可以減少修改帶來的影響。