아이폰 개발하다 안드로이드 유지보수가 필요해서 다시 공부 시작..

IOS 델리게이트 패턴과 유사한게 있을 까 싶어 찾아보니 동일한 기능이 있다. ^^

 

ClassB interface Delegate

interface ClassBDelegate {
    void setA(String a);
    void setB(String b);
    void setC(String c);
}
public class ClassB {

	private final WeakReference<ClassBDelegate> delegate;

	public void ClassB(ClassBDelegate delegate) {
    	this.delegate = new WeakReference<ClassBDelegate>(delegate);
    }

    public void callMe() {
        System.out.println("DelegateClass Call");
        if (delegate != null) {
            String data = "orignal data";
            this.delegate.get().setA(data + "Delegate A Function");
            this.delegate.get().setB(data + "Delegate B Function");
            this.delegate.get().setC(data + "Delegate C Function");
        }
    }
}

 

MainActivity 델리게이트 연동

public class MainActivity extends AppCompatActivity implements ClassBDelegate {

    ClassB classb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        classb = new ClassB(this);
        classb.callMe();
    }

    /// DelegateClass Interface
    @Override
    public void setA(String a) {
        Log.d("DelegateA",a + " 처리가 되었습니다.");
    }

    @Override
    public void setB(String b) {
        Log.d("DelegateB",b + " 처리가 되었습니다.");
    }

    @Override
    public void setC(String c) {
        Log.d("DelegateC",c + " 처리가 되었습니다.");
    }
}

+ Recent posts