责任链

1:意图
为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
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());
posted @ 2008-06-23 15:55  李占卫  阅读(341)  评论(0编辑  收藏  举报