Android/Desgin Pattern

Callback(Listener) 예제

lipnus 2018. 12. 11. 19:23
반응형


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