夜光带你走进 Java 成神之路(三十四)擅长的领域

夜光序言:

 

我们随时都可以撤。我们始终忠于自己的内心。尝试就是最好的结果。

扫描二维码关注公众号,回复: 8894251 查看本文章

 

正文:

                           以道御术 / 以术识道

 

 

下面,我们看看状态模式

下面我们介绍职责链模式

package 责任链模式.采购审批;

public class PurchaseRequest {

    private int type = 0;  //夜光:请求的类型
    private float price = 0.0f;
    private int id = 0;  //第几个请求

    //下面,我们写一个构造器
    public PurchaseRequest(int type, float price, int id) {
        this.type = type;
        this.price = price;
        this.id = id;
    }

    public int getType() {
        return type;
    }

    public float getPrice() {
        return price;
    }

    public int getId() {
        return id;
    }
}

package 责任链模式.采购审批;

public class PurchaseRequest {

    private int type = 0;  //夜光:请求的类型
    private float price = 0.0f;  //夜光:请求的金额
    private int id = 0;  //第几个请求

    //下面,我们写一个构造器
    public PurchaseRequest(int type, float price, int id) {
        this.type = type;
        this.price = price;
        this.id = id;
    }

    public int getType() {
        return type;
    }

    public float getPrice() {
        return price;
    }

    public int getId() {
        return id;
    }
}
package 责任链模式.采购审批;

//夜光
public class MasterApprover extends Approver{

    public MasterApprover(String name) {
        super(name); //调用父类的,把名字传进去就可以了
    }

    @Override
    public void processRequest(PurchaseRequest purchaseRequest) {
        if (purchaseRequest.getPrice() > 10000 && purchaseRequest.getPrice() <= 30000){
            System.out.println("请求编号 id = " + purchaseRequest.getId()
                    + "被" + this.name + "处理");
        }else{
            //让下一个来处理
            approver.processRequest(purchaseRequest);
        }
    }
}
package 责任链模式.采购审批;

public class DepartmentApprover extends Approver{

    public DepartmentApprover(String name) {
        super(name); //调用父类的,把名字传进去就可以了
    }

    @Override
    public void processRequest(PurchaseRequest purchaseRequest) {
        if (purchaseRequest.getPrice() <= 5000){
            System.out.println("请求编号 id = " + purchaseRequest.getId()
            + "被" + this.name + "处理");
        }else{
            //让下一个来处理
            approver.processRequest(purchaseRequest); //到学院这个层面
        }
    }
}
package 责任链模式.采购审批;

public class CollegeApprover extends Approver{

    public CollegeApprover(String name) {
        super(name); //调用父类的,把名字传进去就可以了
    }

    @Override
    public void processRequest(PurchaseRequest purchaseRequest) {
        if (purchaseRequest.getPrice() > 5000 && purchaseRequest.getPrice() <= 10000){
            System.out.println("请求编号 id = " + purchaseRequest.getId()
                    + "被" + this.name + "处理");
        }else{
            //让下一个来处理
            approver.processRequest(purchaseRequest); //下一个到校长层面
        }
    }
}
package 责任链模式.采购审批;

public abstract class Approver {

    Approver approver;  //下一个处理者
    String name; //名字

    //给一个构造器
    public Approver(String name) { //至少要告诉我,你的名字
         this.name = name;
    }

    //夜光:既然要告诉我下一个处理者,那么需要一个set方法
    public void setApprover(Approver approver) {
        this.approver = approver;
    }

    //处理审批请求的方法
    //得到一个请求,处理是子类完成,因此该方法做成抽象的
    public abstract void processRequest(PurchaseRequest purchaseRequest);


}
发布了1477 篇原创文章 · 获赞 281 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/103594423