单一职责原则
一个对象只包含单一的职责 实现高内聚、低耦合
例一:CRM客户管理系统 初步类关系图
重构后类关系图
DBUtil:连接数据库
CustomerDAO:操作数据库 增删改查
CustomerDataChart:负责图表的生成和显示
例二: 日志类 功能实现
/// <summary>
/// 日志类
/// </summary>
public class Journal
{
private readonly List<string> entries = new List<string>();
private static int count = 0;
public int AddEntry(string text)
{
entries.Add($"{++count}: {text}");
return count;
}
public void RemoveEntry(int index)
{
entries.RemoveAt(index);
}
public override string ToString()
{
return string.Join(Environment.NewLine, entries);
}
//public void Save(string filename)
//{
// File.WriteAllText(filename, ToString());
//}
public static Journal Load(string filename)
{
Journal j = new Journal();
string[] strContent= File.ReadAllLines(filename);
foreach(string s in strContent)
{
j.AddEntry(s);
}
return j;
}
public static Journal Load(Uri uri)
{
WebRequest wr = WebRequest.Create(uri);
Journal j = new Journal();
j.AddEntry(wr.GetResponse().ContentType);
return j;
}
}
public class Persistence
{
public void SaveToFile(Journal j, string filename, bool overwrite = false)
{
if (overwrite || !File.Exists(filename))
File.WriteAllText(filename, j.ToString());
}
}
调用示例
var j = new Journal();
j.AddEntry("Hello,C++");
j.AddEntry("Hello,C#");
Console.WriteLine(j);
string filename = @"D:\\0720.txt";
var p = new Persistence();
p.SaveToFile(j, filename, true);