콜백(Call Back)
조금은 낯설지도 있지만, 알고 있으면 유용한 디자인패턴인 콜백(CallBack) 패턴에 대해서 알아보록 하겠습니다.
"콜백(CallBack)의 정의는
호출자(Caller)가 피호출자(Callee)를 호출하는 것이 아니라
피호출자(Callee)가 호출자(Caller)를 호출하는 것을 말한다. "
쉽게 말해서 어떤 일을 처리 할 때에 그 일이 끝났을 때, 다른일을 처리하는 메서드를 밖에서 구현 해놓았다가 필요시에 사용한다는 것입니다.
보통 비동기 처리 시스템에서 많이 사용되는 기법이다. 지금 설명하고 있는 콜백(CallBack) 패턴은 한번 알아두면은 자주 유용하게 사용하는 방법이기에 꼭 알아두기를 바랍니다.
코드의 재사용이 높지만, 개인적인 생각일수도 있지만, 어떤 디자인 패턴이든 마찬가지겠지만, 잦은 사용은 복잡해진다는 단점이 있습니다.
"콜백(CallBack)의 정의는
호출자(Caller)가 피호출자(Callee)를 호출하는 것이 아니라
피호출자(Callee)가 호출자(Caller)를 호출하는 것을 말한다. "
쉽게 말해서 어떤 일을 처리 할 때에 그 일이 끝났을 때, 다른일을 처리하는 메서드를 밖에서 구현 해놓았다가 필요시에 사용한다는 것입니다.
보통 비동기 처리 시스템에서 많이 사용되는 기법이다. 지금 설명하고 있는 콜백(CallBack) 패턴은 한번 알아두면은 자주 유용하게 사용하는 방법이기에 꼭 알아두기를 바랍니다.
코드의 재사용이 높지만, 개인적인 생각일수도 있지만, 어떤 디자인 패턴이든 마찬가지겠지만, 잦은 사용은 복잡해진다는 단점이 있습니다.
활용예제
BlogTest .class
public class BlogTest {
public void test() {
SomeClass someClass = new SomeClass(someCallBack);
someClass.doSome();
}
private CallBack someCallBack = new CallBack() {
@Override
public void callBackMethod(Object obj) {
String result = (String) obj;
System.out.println(result);
}
};
}
---------------------------------------------------------------------------------------------
SomeClass.class
public class SomeClass {
private CallBack someCallBack;
public SomeClass(CallBack someCallBack) {
this.someCallBack = someCallBack;
}
public void doSome() {
// working...
String result = "Hello CallBack";
someCallBack.callBackMethod(result);
}
}
---------------------------------------------------------------------------------------------
CallBack.interface
public interface CallBack {
void callBackMethod(Object obj);
}
BlogTest .class
public class BlogTest {
public void test() {
SomeClass someClass = new SomeClass(someCallBack);
someClass.doSome();
}
private CallBack someCallBack = new CallBack() {
@Override
public void callBackMethod(Object obj) {
String result = (String) obj;
System.out.println(result);
}
};
}
---------------------------------------------------------------------------------------------
SomeClass.class
public class SomeClass {
private CallBack someCallBack;
public SomeClass(CallBack someCallBack) {
this.someCallBack = someCallBack;
}
public void doSome() {
// working...
String result = "Hello CallBack";
someCallBack.callBackMethod(result);
}
}
CallBack.interface
public interface CallBack {
void callBackMethod(Object obj);
}
댓글 없음:
댓글 쓰기