职责链模式

在这里插入图片描述

public class Client {
    public static void main(String[] args) {
        /*
        职责链模式
         */
        Leader objDirector, objManager, objGeneralManager, objViceGeneralManager;

        objDirector = new Director("王明");
        objManager = new Manager("赵强");
        objGeneralManager = new GeneralManager("李波");
        objViceGeneralManager = new ViceGeneralManager("肖红");

        objDirector.setSuccessor(objManager);
        objManager.setSuccessor(objViceGeneralManager);
        objViceGeneralManager.setSuccessor(objGeneralManager);

        //单链表中:建立职责链
        PurchaseRequest lr1 = new PurchaseRequest("张三", 50000);
        objDirector.handleRequest(lr1);
    }
}
public class PurchaseRequest {
    private String purchaseName;
    private int purchaseMoney;

    public PurchaseRequest(String purchaseName, int purchaseMoney) {
        this.purchaseName = purchaseName;
        this.purchaseMoney = purchaseMoney;
    }

    public void setPurchaseName(String purchaseName) {
        this.purchaseName = purchaseName;
    }

    public void setPurchaseMoney(int purchaseMoney) {
        this.purchaseMoney = purchaseMoney;
    }

    public String getPurchaseName() {
        return purchaseName;
    }

    public int getPurchaseMoney() {
        return purchaseMoney;
    }

}
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(PurchaseRequest request);
}
public class Director extends Leader {
    public Director(String name) {
        super(name);
    }

    public void handleRequest(PurchaseRequest request) {
        if (request.getPurchaseMoney() <= 10000) {
            System.out.println("主任" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
        } else {
            if (this.successor != null) {
                this.successor.handleRequest(request);
            }
        }
    }
}
public class Manager extends Leader {
    public Manager(String name) {
        super(name);
    }

    public void handleRequest(PurchaseRequest request) {
        if (request.getPurchaseMoney() <= 50000) {
            System.out.println("经理" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
        } else {
            if (this.successor != null) {
                this.successor.handleRequest(request);
            }
        }
    }
}
public class ViceGeneralManager extends Leader {
    public ViceGeneralManager(String name) {
        super(name);
    }

    public void handleRequest(PurchaseRequest request) {
        if (request.getPurchaseMoney() <= 100000) {
            System.out.println("副总经理" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
        } else {
            if (this.successor != null) {
                this.successor.handleRequest(request);
            }
        }
    }
}
public class GeneralManager extends Leader {
    public GeneralManager(String name) {
        super(name);
    }

    public void handleRequest(PurchaseRequest request) {
        if (request.getPurchaseMoney() <= 200000) {
            System.out.println("总经理" + name + "审批员工" + request.getPurchaseName() + "的采购单,采购金额为" + request.getPurchaseMoney() + "元。");
        } else {
            System.out.println("数额太大,需要开会讨论");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值