1. Callee(관찰당하는 곳, 결과 반환해주는 곳) 클래스
public class Callee {
//내부인터페이스 구현(외부도 상관없음)
interface Callback{
void CallbackMethod();
}
private boolean condition;
private Callback callback;
//생성자
Callee(){
this.condition = false;
this.callback = null;
}
public void setCallback(Callback callback){
this.callback = callback;
//1초마다 condition을 체크하고 5초가 되면 true로 바꿈
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try{
int count = 0;
while(condition == false) {
Thread.sleep(1000);
count++;
if (count >= 5) condition = true;
}
checkCondition();
}catch (Exception e){}
}
});
thread.start();
}
private void checkCondition() {
if(this.condition==true && this.callback != null){
this.callback.CallbackMethod();
}
}
}
2. Caller(관찰하는 곳, 반환해준 것을 받는 곳) 클래스
public class Caller {
public static void main(String[] arags){
Callee callee = new Callee();
//Callee의 interface Callback 구현
Callee.Callback callback = new Callee.Callback() {
@Override
public void CallbackMethod() {
System.out.println("콜백 하이!");
}
};
callee.setCallback(callback);
while (true){
try{
//1초마다 메시지 출력
Thread.sleep(1000);
System.out.println("1초 지났습니다.");
}catch (Exception e){}
}
}
}
실행할 함수(여기서는 callbackMethod)를 같이 보낸 다음
받는 곳에서 걔를 호출해준다.
'Android > Desgin Pattern' 카테고리의 다른 글
MVC, MVP, MVVM 비교 (0) | 2019.05.10 |
---|---|
MVP패턴 (+BaseActivity, BasePresenter, BaseView) (0) | 2019.05.07 |
Listener (0) | 2019.03.21 |
[kotlin] MVP패턴 (0) | 2018.12.10 |
싱글톤(Singleton) 패턴 (0) | 2018.12.09 |