Chain_Of_Responsibility_Pattern

package chain_of_responsibility_pattern;

public class Request {
    private String requestType;

    public String getRequestType() {
        return requestType;
    }

    public void setRequestType(String requestType) {
        this.requestType = requestType;
    }
    
    private String requestContent;

    public String getRequestContent() {
        return requestContent;
    }

    public void setRequestContent(String requestContent) {
        this.requestContent = requestContent;
    }
    
    private int number;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }
}

package chain_of_responsibility_pattern;

public abstract class Manager {
    protected String name;
    protected Manager superior;
    public Manager(String name) {
        this.name = name;
    }
    public void setSuperior(Manager superior) {
        this.superior = superior;
    }
    public abstract void requestApplication(Request request);
}

package chain_of_responsibility_pattern;

public class CommonManager extends Manager{
    public CommonManager(String name) {
        super(name);
    }
    @Override
    public void requestApplication(Request request) {
        if(request.getRequestType().equals("Ask for leave.") && request.getNumber() <= 2) {
            System.out.println("The days:"+request.getNumber());
            System.out.println("The contents:"+request.getRequestContent());
            System.out.println("Permitted by:" + name);
        }else {
            if(superior != null) {
                superior.requestApplication(request);
            }
        }
    }
}

package chain_of_responsibility_pattern;

public class Majordomo extends Manager{
    public Majordomo(String name) {
        super(name);
    }
    @Override
    public void requestApplication(Request request) {
        if(request.getRequestType().equals("Ask for leave.") && request.getNumber()<=5) {
            System.out.println("The days:"+request.getNumber());
            System.out.println("The contents:"+request.getRequestContent());
            System.out.println("Permitted by:" + name);
        }else {
            if(superior != null) {
                superior.requestApplication(request);
            }
        }
    }
}

package chain_of_responsibility_pattern;

public class GeneralManager extends Manager{
    public GeneralManager(String name) {
        super(name);
    }
    @Override
    public void requestApplication(Request request) {
        if(request.getRequestType().equals("Ask for leave.")) {
            System.out.println("The days:"+request.getNumber());
            System.out.println("The contents:"+request.getRequestContent());
            System.out.println("Permitted by:" + name);
        }else if(request.getRequestType().equals("Wage hike.")&&request.getNumber()<500){
            System.out.println("The money:"+request.getNumber());
            System.out.println("The contents:"+request.getRequestContent());
            System.out.println("Permitted by:" + name);
        }else {
            System.out.println("Let's talk about it later.");
        }
    }
}

package chain_of_responsibility_pattern;

public class Main {
    public static void main(String args[]) {
        CommonManager manager = new CommonManager("Tom");
        Majordomo majordomo = new Majordomo("Sam");
        GeneralManager general = new GeneralManager("Harry");
        manager.setSuperior(majordomo);
        majordomo.setSuperior(general);
        
        Request request = new Request();
        request.setRequestType("Ask for leave.");
        request.setNumber(1);
        request.setRequestContent("Lisa wants to leave just one day.");
        manager.requestApplication(request);
        
        Request request2 = new Request();
        request2.setRequestType("Ask for leave.");
        request2.setNumber(4);
        request2.setRequestContent("Lisa wants to leave a few days.");
        manager.requestApplication(request2);
        
        Request request3 = new Request();
        request3.setRequestType("Wage hike.");
        request3.setNumber(300);
        request3.setRequestContent("Lisa wants to raise little money.");
        manager.requestApplication(request3);
        
        Request request4 = new Request();
        request4.setRequestType("Wage hike.");
        request4.setNumber(800);
        request4.setRequestContent("Lisa wants to raise much money.");
        manager.requestApplication(request4);
    }
}
This is a general introduction to the 23 design patterns:
https://blog.csdn.net/GZHarryAnonymous/article/details/81567214

See more source code:[GZHarryAnonymous](https://github.com/GZHarryAnonymous/Design_Pattern)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值