GiantStepDEV

์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค๋ž€?

  • ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธํ•œ ์ธํ„ฐํŽ˜์ด์Šค
  • ์ฃผ๋กœ UI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•จ(์˜ˆ. ์•ˆ๋“œ๋กœ์ด๋“œ)

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธํ•˜๋Š” ์ด์œ ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์™€ ๊ธด๋ฐ€ํ•œ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ๊ตฌํ˜„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์ด๋‹ค.

 

Button์„ ํด๋ฆญ ํ–ˆ์„ ๋•Œ, ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ›๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— Button ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋งŒ ๋ฐ›์•„์•ผ ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด Button ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

Button

public class Button {
    OnClickListener listener;

    void setOnClickListener(OnClickListener listener) {
        this.listener = listener;
    }
    void touch() {
        listener.onClick();
    }

    interface OnClickListener {
        void onClick(); // ์ถ”์ƒ ๋ฉ”์†Œ๋“œ : ์ƒ์† ๋ฐ›์€ ํด๋ž˜์Šค์—์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋ฐ˜๋“œ์‹œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผ ํ•จ
    }
}
  • void setOnClickListener(OnClickListener listener) {}
    ๋งค๊ฐœ๋ณ€์ˆ˜ ๋‹คํ˜•์„ฑ์œผ๋กœ.. ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌ ๋ฐ›์Œ.
  • void touch() { listner.onClick(); }
    ๊ตฌํ˜„ ๊ฐ์ฒด์˜ onClick() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ!
  • interface OnClickListener { void onClick(); }
    ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ!

CallListner

  • ์ „ํ™”๋ฅผ ๊ฑฐ๋Š” ๋ฒ„ํŠผ์— ๋Œ€ํ•œ ๋™์ž‘ ๊ตฌํ˜„
public class CallListener implements Button.OnClickListener {
    @Override
    public void onClick() {
        System.out.println("์ „ํ™”๋ฅผ ๊ฒ๋‹ˆ๋‹ค.");
    }
}

MessageListener

public class MessageListener implements Button.OnClickListener{
    @Override
    public void onClick() {
        System.out.println("๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.");
    }
}

Main

public class Main {
    public static void main(String[] args) {
        Button button = new Button();
        button.setOnClickListener(new CallListener());
        button.touch();

        button.setOnClickListener(new MessageListener());
        button.touch();
    }
}
  • button.touch();
    touch() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ, ๋“ฑ๋ก๋œ listener์˜ onClick()์„ ํ˜ธ์ถœํ•จ.
์ „ํ™”๋ฅผ ๊ฒ๋‹ˆ๋‹ค.
๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!