作者:依乐祝
Main class
class Program { static void Main(string[] args) { Message message = new Message(); message.CustomMessage = "Welcome by Email"; EmailMessageCommand emailMessageCommand = new EmailMessageCommand(message); Message message2 = new Message(); message2.CustomMessage = "Welcome by SMS"; SmsMessageCommand smsMessageCommand = new SmsMessageCommand(message2); Broker broker = new Broker(); broker.SendMessage(emailMessageCommand); broker.SendMessage(smsMessageCommand); Console.ReadKey(); } }消息类
public class Message { public string CustomMessage { get; set; } public void EmailMessage() { Console.WriteLine($"{CustomMessage} : Email Message sent"); } public void SmsMessage() { Console.WriteLine($"{CustomMessage} : Sms Message sent"); } }接口和代理类
public interface IMessageCommand { void DoAction(); } public class Broker { public void SendMessage(IMessageCommand command) { command.DoAction(); } }命令
public class EmailMessageCommand : IMessageCommand { private Message oMessage; public EmailMessageCommand(Message oMessage) { this.oMessage = oMessage; } public void DoAction() { oMessage.EmailMessage(); } } public class SmsMessageCommand : IMessageCommand { private Message oMessage; public SmsMessageCommand(Message oMessage) { this.oMessage = oMessage; } public void DoAction() { oMessage.SmsMessage(); } }输出
什么是瘦控制器,我们为什么需要它?什么是MediatR?
当我们开始使用MVC框架进行开发时,逻辑是用控制器的动作方法编写的;就像我们有一个简单的电子商务应用程序,其中用户应该会下订单。我们有一个控制器,OrderController,用来管理订单。当用户下订单时,我们应该在数据库中保存记录。
在此之前,我们有一个简化的代码。然而,经过一段时间后,我们意识到还有一个确认电子邮件的业务需求。现在,第二步是发送确认电子邮件给客户。后来,我们意识到,在这个步骤之后,我们还需要执行另一个操作,即,记录信息等。最后,我们还需要将用户的信息保存到CRM中。关键是它会增长控制器的大小。现在,我们可以称之为“臃肿控制器”。
基于命令的体系结构允许我们发送命令来执行某些操作,并且我们有单独的命令处理程序,使关注点分离和提高单

