單一責任原則 Single Responsibility Principle (SRP)

一個類別應該只有一個改變的理由!

SRP的主要精神是提高內聚力,高內聚力意味著你只能想到一個理由去改變它!

SRP的使用時機:

  • 當你想修改資料庫查詢語法與系統紀錄邏輯時,都會修改到同一個類別時,那就需要拆開!
  • 類別中的一段程式碼有重複使用的需求
  • 事先實作的未來需求程式碼

SRP的副作用:

  • 類別變多耦合增加

SRP需注意的事項:

  • 如果沒有足夠經驗去定義一個物件的Responsibility,即不需過早進行SRP規劃。
  • 需不斷提升開發經驗與重構技術。

//不符合 SRP 精神
public class Program
{
	public static void Main()
	{
		DataAccess.InsertData();
	}
}

class DataAccess
{
	public static void InsertData()
	{
		Console.WriteLine("Data inserted into database successfully");
		Console.WriteLine("Logged Time:" + DateTime.Now.ToLongTimeString() + " Log  Data insertion completed successfully");
	}
}
//符合 SRP 精神
public class Program
{
	public static void Main()
	{
		DataAccess.InsertData();
	}
}


class DataAccess
{
	public static void InsertData()
	{
		Console.WriteLine("Data inserted into database successfully");
		Logger.WriteLog();
	}
}

class Logger
{
	public static void WriteLog()
	{
		Console.WriteLine("Logged Time:" + DateTime.Now.ToLongTimeString() +
			" Log  Data insertion completed successfully");
	}
}