zoukankan      html  css  js  c++  java
  • 责任链

    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());
  • 相关阅读:
    三(奇数)等分两者中间有间隔,两端没间隔
    网易云音乐基于 Flink + Kafka 的实时数仓建设实践
    【电商知识】关于电商定价的几个策略
    硬核!15张图解Redis为什么这么快
    用户画像实践:神策标签生产引擎架构
    数据产品实战(二):ABTest平台
    R代码|基于特征重要性的特征排序代码
    R代码|K均值算法R语言代码
    一文了解R语言数据分析 ----主成分分析
    全网最全 | MySQL EXPLAIN 完全解读
  • 原文地址:https://www.cnblogs.com/tommyli/p/1228254.html
Copyright © 2011-2022 走看看