์ค์ฒฉ ์ธํฐํ์ด์ค๋?
- ํด๋์ค ๋ด๋ถ์ ์ ์ธํ ์ธํฐํ์ด์ค
- ์ฃผ๋ก 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()์ ํธ์ถํจ.
์ ํ๋ฅผ ๊ฒ๋๋ค.
๋ฉ์์ง๋ฅผ ๋ณด๋
๋๋ค.