Object 상태 변화가 명확한 것(버튼을 누르면 값이 증가)은
그냥 EventListener로 callback 받는게 좋습니다.
헉헉... 탭이안되네...
//File ClazzA.java
public class ClazzA{
public void doSomething(){
//이벤트 발생하여 무언가 동작
//동작하기
}
}
//File ClazzB.java
public class ClazzB{
//이벤트를 발생을 알려줄 리스너입니다.
public static interface CountListener{
void onFireEvent();
}
private CountListener listener;
private int count;
//값을 더합니다.
public void addValue(int value){
this.count+=value;
//리스너가 존재하고 count가 99를 초과하면
//리스너에 이벤트를 알립니다.
if(this.listener!=null && count>99){
this.listener.onFireEvent();
}
}
public void setCountListener(CountListener listener){
this.listener = listener;
}
}
//File SomeActivity.java
public class SomeActivity extends Activity{
protected void onCreate(Bundle savedInstanceValue){
super.onCreate(savedInstanceValue);
// 클래스 A와 클래스B 생성
final ClazzA clzA = new ClazzA();
final ClazzB clzB = new ClazzB();
//클래스 B에서 발생한 이벤트를 받기위한 리스너 셋팅
clzB.setCountListener(new CountListener(){
@override
public void onFireEvent(){
//clzB에서 listener.onFireListener를 호출하면
//실제 객체는 이곳이 스코프이기 때문에 이곳에서 호출됩니다.
clzA.doSomething();
}
});
findViewById(R.id.btn_click).setOnClickListener(new OnClickListener(){
@override
public void onClick(View v){
clzB.addValue(1);
}
});
}
}