JAVA/이론
[JAVA] 콜백
sirius
2021. 3. 23. 10:28
일반적으로 함수 호출을 할 때에는 함수를 호출하는 함수(Caller)와 호출당하는 함수(Callee)가 있다.
콜백(Callback)은 일반적인 함수 호출의 흐름과 다르게 동작을 한다. 호출을 당한 함수(Callee)에서 호출을 한 함수(Caller)을 호출할 수 있다.
public interface callback {
void addCount();
void subCount();
boolean isLessZero();
}
class Callee {
private int count;
private callback callBack;
public Callee() { count = 0; }
public void setCallBack(callback callBack) {
this.callBack = callBack;
}
public int getCount() {
return count;
}
public void addCount() {
this.count++;
}
public void subCount() {
this.count--;
}
public boolean execute() {
Scanner scanner = new Scanner(System.in);
System.out.println("Input Data : ");
int condition = scanner.nextInt();
switch (condition) {
case 1:
this.callBack.addCount();
break;
case 2:
this.callBack.subCount();
break;
}
return callBack.isLessZero();
}
}
public class Caller {
public static void main(String[] args) {
Callee callee = new Callee();
callee.setCallBack(new callback() {
@Override
public void addCount() {
callee.addCount();
System.out.println(callee.getCount());
}
@Override
public void subCount() {
callee.subCount();
System.out.println(callee.getCount());
}
@Override
public boolean isLessZero() {
if (callee.getCount() < 0) return true;
return false;
}
});
while(true) {
if (callee.execute()) break;
}
}
}