์ ๋ต
๊ฐ์ฒด๋ค์ด ํ ์ ์๋ ํ์ ๊ฐ๊ฐ์ ๋ํด ์ ๋ต ํด๋์ค๋ฅผ ์์ฑํ๊ณ , ์ ์ฌํ ํ์๋ค์ ์บก์ํ ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ ํ์ฌ
ํ์๋ฅผ ๋ฐ๊พธ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ง์ ์ ์ผ๋ก ํ์๋ฅผ ์ํํ์ง ์๊ณ ์ ๋ต์ ๋ฐ๊ฟ์ค์ผ๋ก์ ํ์๋ฅผ ์ ์ฐํ๊ฒ ํ์ฅ ์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
๋์์ธ ํจํด์ ๊ฐ์ฅ ์ค์ํ ํจํด์ผ๋ก ๋ค์ 3๊ฐ์ง์ ์์๋ก ๊ตฌ์ฑ๋๋ค.
์ ๋ต๊ฐ์ฒด๋ฅผ ๊ฐ์ง ์ ๋ต ๊ฐ์ฒด
public interface Action {
void move();
}
์ ๋ต ๊ฐ์ฒด์ ๊ตฌํ
public class Walking implements Action {
@Override
public void move() {
System.out.println("Walking road");
}
}
public class Running implements Action {
@Override
public void move() {
System.out.println("Running road");
}
}
์ ๋ต ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ์ปจํ ์คํธ (์๋น)
public class Human {
void start(Action action) {
System.out.println("Start Action");
action.move();
System.out.println("End Action");
}
}
์ ๋ต ๊ฐ์ฒด๋ฅผ ์์ฑํด ์ปจํ ์คํธ์ ์ฃผ์ ํ๋ ํด๋ผ์ด์ธํธ (๊ณต๊ธ)
public class Client {
public static void main (String[] args) {
Human human = new Human();
Walking walk = new Walking();
human.start(walk);
Running run = new Running();
human.start(run);
}
}
Start Action
Walking road
End Action
Start Action
Running road
End Action
ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ต์ ์์ฑํ์ฌ ์ ๋ต์ ์คํ (์๋น) ํ ์ปจํ ์คํธ์๊ฒ ์ฃผ์ ํ๋ ํจํด์ด๋ค.
ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด๊ณผ ์ ์ฌํ์ง๋ง ๋ค์ํ ์ ๋ต์ ๋ณ๊ฒฝํ๋ฉด์ ์ปจํ ์คํธ์๊ฒ ์ฃผ์ ํ ์ ์๋ค. (ํ ํ๋ฆฟ ๋ฉ์๋๋ณด๋ค ์ฐ์)