zoukankan      html  css  js  c++  java
  • 设计模式职责链模式

    类图

     

    源码

    ShoppingRequest.java
    
    package com.chain;
    
    public class ShoppingRequest {
        private String shoppingReason;
        private double billMoney;
        public ShoppingRequest(String shoppingReason,double billMoney)
        {
            this.shoppingReason=shoppingReason;
            this.billMoney=billMoney;
        }
        public String getShoppingReason() {
            return shoppingReason;
        }
        public void setShoppingReason(String shoppingReason) {
            this.shoppingReason = shoppingReason;
        }
        public double getBillMoney() {
            return billMoney;
        }
        public void setBillMoney(double billMoney) {
            this.billMoney = billMoney;
        }
        
    
    }
    
    Leader.java
    
    package com.chain;
    
    public abstract class Leader {
        protected String name;
        protected Leader successor;
        public Leader(String name)
        {
            this.name=name;
        }
        public void setSuccessor(Leader successor)
        {
            this.successor=successor;
        }
        public abstract void HandleRequest(ShoppingRequest request);
    }
    
    Director.java
    
    package com.chain;
    
    public class Director extends Leader{
        public Director(String name)
        {
            super(name);
        }
        public void HandleRequest(ShoppingRequest request)
        {
            if(request.getBillMoney()<10000.00)
            {
                System.out.println("主任"+name+"处理物资采购:"+
            request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB");
            }else
            {
                if(this.successor!=null) {
                    this.successor.HandleRequest(request);
                }
            }
        }
    }
    
    DepartmentManager.java
    
    package com.chain;
    
    public class DepartmentManager extends Leader{
        public DepartmentManager(String name) {
            super(name);
        }
        public void HandleRequest(ShoppingRequest request) {
            if(request.getBillMoney()<50000.00)
            {
                System.out.println("部门经理"+name+"处理物资采购:"+
            request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB");
            }else
            {
                if(this.successor!=null) {
                    this.successor.HandleRequest(request);
                }
            }
        }
    }
    
    ViceManager.java
    package com.chain;
    
    public class ViceManager extends Leader{
        public ViceManager(String name) {
            super(name);
        }
        public void HandleRequest(ShoppingRequest request) {
            if(request.getBillMoney()<100000.00)
            {
                System.out.println("副经理"+name+"处理物资采购:"+
            request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB");
            }else
            {
                if(this.successor!=null) {
                    this.successor.HandleRequest(request);
                }
            }
        }
    }
    
    GeneralManager.java
    
    package com.chain;
    
    public class GeneralManager extends Leader {
        public GeneralManager(String name) {
            super(name);
        }
        public void HandleRequest(ShoppingRequest request) {
            if(request.getBillMoney()<200000.00)
            {
                System.out.println("总经理"+name+"处理物资采购:"+
            request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB");
            }else
            {
                if(this.successor!=null) {
                    this.successor.HandleRequest(request);
                }
            }
        }
    }
    
    MeetManager.java
    
    package com.chain;
    
    public class MeetManager extends Leader{
        public MeetManager(String name) {
            super(name);
        }
        public void HandleRequest(ShoppingRequest request) {
            if(request.getBillMoney()>=200000.00)
            {
                System.out.println("职工大会"+name+"处理:"+
            request.getShoppingReason()+",批准采购资金为:"+request.getBillMoney()+"RMB");
            }else
            {
                if(this.successor!=null) {
                    this.successor.HandleRequest(request);
                }
            }
        }
    
    }
    
    Client.java
    
    package com.chain;
    
    public class Client {
        public static void main(String[] args) {
            Leader objDirector,objDepartmentManager,objViceManager,objGeneralManager,objMeetManager;
            
            objDirector = new Director("张三");
            objDepartmentManager=new DepartmentManager("李四");
            objViceManager=new ViceManager("王五");
            objGeneralManager =new GeneralManager("钱六");
            objMeetManager =new MeetManager("全体职工");
            objDirector.setSuccessor(objDepartmentManager);
            objDepartmentManager.setSuccessor(objViceManager);
            objViceManager.setSuccessor(objGeneralManager);
            objGeneralManager.setSuccessor(objMeetManager);
            ShoppingRequest shopping1=new ShoppingRequest("购买打印纸", 1000.00);
            objDirector.HandleRequest(shopping1);
            ShoppingRequest shopping2=new ShoppingRequest("配置空调", 25000.00);
            objDepartmentManager.HandleRequest(shopping2);
            ShoppingRequest shopping3=new ShoppingRequest("更新电脑", 80000.00);
            objViceManager.HandleRequest(shopping3);
            ShoppingRequest shopping4=new ShoppingRequest("车间维修", 150000.00);
            objGeneralManager.HandleRequest(shopping4);
            ShoppingRequest shopping5=new ShoppingRequest("收购红星公司", 4000000.00);
            objMeetManager.HandleRequest(shopping5);
        }
    }

    测试截图

     

  • 相关阅读:
    【Linux基础】linux下修改ls显示的时间格式
    【Teradata】gtwglobal查看
    【Teradata】tdlocaledef修改默认日期配置
    【Linux基础】文件处理实例
    【Linux基础】awk命令
    【teradata】强制解锁
    第1节:保存文档
    Centos7安装MySQL数据库
    MyBatis框架之异常处理
    spring事务源码分析
  • 原文地址:https://www.cnblogs.com/lx06/p/15688487.html
Copyright © 2011-2022 走看看