行为型设计模式
11种行为型设计模式,是最大的一个家族了。
行为型设计模式关注的是对象和行 为的分离---直白点说,就是方法到 底放在哪里?会看到频繁的逻辑(方 法)转移 责任链模式,简直就是行为型设计模式无止境的行为转移。
1. Interpreter(解释器)
2. Template Method(模板方法)
3. Chain of Responsibility(责任链)
4. Command(命令)
5. Iterator(迭代器)
6. Mediator(中介者)
7. Memento(备忘录)
8. Observer(观察者)
9. State(状态)
10.Strategy(策略)
11.Visitor(访问者)
责任链模式
责任链模式(ChainOfResponsibility-Pattern)
使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系,将这些对象
串成一条链,并沿着这条链一直传递该请求,直到有对象处理它为止。
请假申请
/// <summary>
/// 请假申请
/// </summary>
public class ApplyContext
{
public int Id { get; set; }
public string Name { get; set; }
/// <summary>
/// 请假时长
/// </summary>
public int Hour { get; set; }
public string Description { get; set; }
public bool AuditResult { get; set; }
public string AuditRemark { get; set; }
}
面向过程编程
public class ResponsibilityChainProgram
{
public static void Show()
{
//场景:请假申请的审批---各级审批
//来个Context上下文---包含请求信息-处理结果-中间结果---行为型设计模式的常见要素
ApplyContext applyContext = new ApplyContext()
{
Id = 10372,
Name = "Kiss",
Hour = 40,
Description = "我想参加上海线下聚会",
AuditResult = false,
AuditRemark = ""
};
{
//很直白翻译了需求,完成了业务功能---菜鸟
//面向过程编程POP--暴露业务细节,无法应对变化---准备升级--OOP
if (applyContext.Hour <= 8)
{
Console.WriteLine("PM审批通过");
}
else if (applyContext.Hour <= 16)
{
Console.WriteLine("主管审批通过");
}
else
{
Console.WriteLine("****************");
}
}
}
}
面向对象
审批者基类
public abstract class AbstractAuditor
{
public string? Name { get; set; }
protected AbstractAuditor _Auditor = null;
public void SetNext(AbstractAuditor abstractAuditor)
{
this._Auditor = abstractAuditor;
}
public abstract void Audit(ApplyContext applyContext);
protected void AuditNext(ApplyContext applyContext)
{
if (this._Auditor != null)
{
this._Auditor.Audit(applyContext);
}
}
}
PM:
标签:---,set,get,C#,责任,ApplyContext,设计模式,public From: https://blog.csdn.net/yixiazhiqiu/article/details/144627721