Chain of Responsibility Pattern
This commit is contained in:
22
design-pattern/src/ChainOfResponsibility/Calculator.java
Normal file
22
design-pattern/src/ChainOfResponsibility/Calculator.java
Normal 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);
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
Chain of Responsibility
|
||||
- 다양한 처리 방식을 유연하게 연결
|
||||
|
||||
- 사칙연산 프로그램
|
||||
15
design-pattern/src/ChainOfResponsibility/Main.java
Normal file
15
design-pattern/src/ChainOfResponsibility/Main.java
Normal 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);
|
||||
}
|
||||
}
|
||||
15
design-pattern/src/ChainOfResponsibility/PlusCalculator.java
Normal file
15
design-pattern/src/ChainOfResponsibility/PlusCalculator.java
Normal 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;
|
||||
}
|
||||
}
|
||||
37
design-pattern/src/ChainOfResponsibility/Request.java
Normal file
37
design-pattern/src/ChainOfResponsibility/Request.java
Normal 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;
|
||||
}
|
||||
}
|
||||
15
design-pattern/src/ChainOfResponsibility/SubCalculator.java
Normal file
15
design-pattern/src/ChainOfResponsibility/SubCalculator.java
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user