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)