责任链
1:意图
为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
2:类图
3:代码
为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
2:类图
3:代码
namespace Bll.ChainOfResponsibility
{
public class MSGEntity
{
//信息内容
private string content;
public string Content
{
get { return content; }
set { content = value; }
}
//审核级别
private int level = 0;
public int Level
{
get { return level; }
set { level = value; }
}
}
public abstract class Man
{
protected Man _man;
public abstract void Read(MSGEntity entity);
public void SetSuccessor(Man man)
{
this._man = man;
}
}
public class Employee : Man
{
const int level = 1;
public override void Read(MSGEntity entity)
{
if (object.Equals(level, entity.Level))
{
//
}
else if (base._man != null)
{
_man.Read(entity);
}
}
}
public class Leader : Man
{
const int level = 2;
public override void Read(MSGEntity entity)
{
if (object.Equals(level, entity.Level))
{
//
}
else if (base._man != null)
{
_man.Read(entity);
}
}
}
public class Manage : Man
{
const int level = 3;
public override void Read(MSGEntity entity)
{
if (object.Equals(level, entity.Level))
{
//
}
else if (base._man != null)
{
_man.Read(entity);
}
}
}
}
//调用
Employee employ = new Employee();
Leader leader = new Leader();
Manage manage = new Manage();
employ.SetSuccessor(leader);
leader.SetSuccessor(manage);
employ.Read(new MSGEntity());
{
public class MSGEntity
{
//信息内容
private string content;
public string Content
{
get { return content; }
set { content = value; }
}
//审核级别
private int level = 0;
public int Level
{
get { return level; }
set { level = value; }
}
}
public abstract class Man
{
protected Man _man;
public abstract void Read(MSGEntity entity);
public void SetSuccessor(Man man)
{
this._man = man;
}
}
public class Employee : Man
{
const int level = 1;
public override void Read(MSGEntity entity)
{
if (object.Equals(level, entity.Level))
{
//
}
else if (base._man != null)
{
_man.Read(entity);
}
}
}
public class Leader : Man
{
const int level = 2;
public override void Read(MSGEntity entity)
{
if (object.Equals(level, entity.Level))
{
//
}
else if (base._man != null)
{
_man.Read(entity);
}
}
}
public class Manage : Man
{
const int level = 3;
public override void Read(MSGEntity entity)
{
if (object.Equals(level, entity.Level))
{
//
}
else if (base._man != null)
{
_man.Read(entity);
}
}
}
}
//调用
Employee employ = new Employee();
Leader leader = new Leader();
Manage manage = new Manage();
employ.SetSuccessor(leader);
leader.SetSuccessor(manage);
employ.Read(new MSGEntity());