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

猜你喜欢

转载自blog.csdn.net/GZHarryAnonymous/article/details/82844680