C# 设计模式-」责任链
最近公司一个40多岁的前辈离职....小弟我开开心心的准备接手他的代码.本想学习一下..
结果打开一看..嫩住了...一个业务逻辑写了将近300行if else 代码..就一个简单的..判断A是否等于 如果等于就返回..不等于就继续往下判断..所有条件判断完为止..
刚好碰到产品需要在加一个判断进去...我对着代码找了版本..硬是没发现在哪里下手..先后顺序..条件对等..等等..
所以小弟决定改了这个...长痛不如短痛..
第一步..头脑中努力回想我学过的设计模式....随便挑一个出来用..然后百度一下你就知道...最终..
C# 责任链模式
1、新建一个抽象类.MessageHandlingAuditor.cs
public abstract class MessageHandlingAuditor
{
public string flag { get; set; }
public abstract ApplyContext Audit(ApplyContext apply);
private MessageHandlingAuditor _Auditor = null;
public void SetNext(MessageHandlingAuditor auditor)
{
this._Auditor = auditor;
}
public ApplyContext AuditNext(ApplyContext context)
{
ApplyContext apply = new ApplyContext();
if (this._Auditor != null)
{
apply = this._Auditor.Audit(context);
}
return apply;
}
}
2、BettingBig.cs 继承抽象
public class BettingBig : MessageHandlingAuditor
{
public override ApplyContext Audit(ApplyContext apply)
{
if (ApplyContext.v==flag )
{
return ApplyContext;
}
else
{
return base.AuditNext(apply);
}
}
}
3、 BettingSmall .cs继承抽象类
public class BettingSmall : MessageHandlingAuditor
{
public override ApplyContext Audit(ApplyContext apply)
{
if (ApplyContext.v== flag )
{
return ApplyContext;
}
else
{
return base.AuditNext(apply);
}
}
}
最后 封装一个类调用
public class MessageHandlingControl
{
public static ApplyContext Build(ApplyContext apply)
{
///把美好的串一串 链一链
MessageHandlingAuditor da = new BettingBig() { flag = "大" };
MessageHandlingAuditor xiao = new BettingSmall() { flag = "小" };
da.SetNext(xiao);
这个可以不要..因为是我代码中的切割版本。哈哈
///xiao.SetNext(dan);
return da.Audit(apply);
}
}
记录下美好生活..
本文地址:https://blog.csdn.net/woainilll/article/details/107335616
上一篇: Dubbo配置_2
下一篇: PHP爬虫抓取网页数据