class User { public string Name { get; set; } public string PassWord { get; set; } } class UserService { public void Register(User user) { if (user.Name == "Kirin") { Log("注冊失敗,已經(jīng)包含名為" + user.Name + "的用戶"); } else { Log("注冊成功!"); } } PRivte void Log(string message) { Console.WriteLine(message); } } UserService類封裝用戶登錄的邏輯,并根據(jù)不同的登錄情況向控制臺打印不同的日志內(nèi)容。當(dāng)程序關(guān)閉時,所記錄的日志自然也隨之消失。
客戶端的代碼為
class Program { static void Main(string[] args) { User user = new User { Name = "Kirin", Password = "123" }; UserService service = new UserService(); service.Register(user); Console.ReadLine(); } } 使用策略模式
class ConsoleLog : ILog { public void Log(string message) { Console.WriteLine(message); } } class TextLog : ILog { public void Log(string message) { using (StreamWriter sw = File.AppendText("log.txt")) { sw.WriteLine(message); sw.Flush(); sw.Close(); } } } 在UserService類中添加一個ILog類型的屬性LogStrategy。
class UserService { public ILog LogStrategy { get; set; } public UserService() { LogStrategy = new ConsoleLog(); } public void Register(User user) { if (user.Name == "Kirin") { LogStrategy.Log("注冊失敗,已經(jīng)包含名為" + user.Name + "的用戶"); } else { LogStrategy.Log("注冊成功!"); } } } 客戶端代碼變?yōu)槿缦滦问健?br> class Program { static void Main(string[] args) { User user = new User { Name = "Kirin", Password = "123" }; UserService service = new UserService { LogStrategy = new TextLog() }; service.Register(user); Console.ReadLine(); } } 在聲明UserService的時候,還可以將將LogStrategy設(shè)置為TextLog。這樣在UserService進行邏輯處理時,使用的LogStrategy即為TextLog,日志將輸出到文本文件中。