• 责任链


    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());
  • 相关阅读:
    “冷面杀手”王励勤赢了
    当VS.NET 无法调试时,不妨尝试一下下面的办法
    Oracle如何调用Windows动态链接库
    根本不值得一提的乒乓球国手王浩
    向总版主提一些建议
    你的家乡话,你还知多少
    黄山三日游(200706020604)
    今天是我的生日,常怀感恩的心
    如果有一个工具可以帮助你将你的代码可视化,你需要吗?
    是社会变化太快,还是我心态有有点怪
  • 原文地址:https://www.cnblogs.com/tommyli/p/1228254.html
Copyright © 2020-2023  润新知