Chain of Responsibility Pattern

This commit is contained in:
kim
2021-01-16 18:33:56 +09:00
parent 2459f8b46f
commit 1c023fb358
6 changed files with 108 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
package ChainOfResponsibility;
abstract public class Calculator {
private Calculator nextCalculator;
public void setNextCalculator(Calculator nextCalculator) {
this.nextCalculator = nextCalculator;
}
public boolean process(Request request) {
if(operator(request)) {
return true;
} else {
if(nextCalculator != null)
return nextCalculator.process(request);
}
return false;
}
abstract protected boolean operator(Request request);
}

View File

@@ -0,0 +1,4 @@
Chain of Responsibility
- 다양한 처리 방식을 유연하게 연결
- 사칙연산 프로그램

View File

@@ -0,0 +1,15 @@
package ChainOfResponsibility;
public class Main {
public static void main(String[] args) {
Calculator plus = new PlusCalculator();
Calculator sub = new SubCalculator();
plus.setNextCalculator(sub);
Request request1 = new Request(1, 2, "+");
Request request2 = new Request(10, 2, "-");
plus.process(request1);
plus.process(request2);
}
}

View File

@@ -0,0 +1,15 @@
package ChainOfResponsibility;
public class PlusCalculator extends Calculator {
@Override
protected boolean operator(Request request) {
if(request.getOperator().equals("+")) {
int a = request.getA();
int b = request.getB();
int result = a + b;
System.out.println(a + " + " + b + " = " + result);
}
return false;
}
}

View File

@@ -0,0 +1,37 @@
package ChainOfResponsibility;
public class Request {
private int a, b;
private String operator;
public Request(int a, int b, String operator) {
this.a = a;
this.b = b;
this.operator = operator;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
}

View File

@@ -0,0 +1,15 @@
package ChainOfResponsibility;
public class SubCalculator extends Calculator {
@Override
protected boolean operator(Request request) {
if(request.getOperator().equals("-")) {
int a = request.getA();
int b = request.getB();
int result = a - b;
System.out.println(a + " - " + b + " = " + result);
}
return false;
}
}