ํผ์ฌ๋ ํจํด (Facade Pattern)
๋ณต์กํ ์๋ธ์์คํ
๋ค์ ํตํฉ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ์์คํ
์ฌ์ฉ์ ์ฝ๊ฒ ๋ง๋๋ ํจํด์
๋๋ค. ์ฌ๋ฌ ๊ฐ์ ํด๋์ค์ ๊ทธ๋ค ์ฌ์ด์ ๋ณต์กํ ์์กด๊ด๊ณ๋ฅผ ์จ๊ธฐ๊ณ , ๋์ ๊ฐ๋จํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ์ ์ฌ์ฉ์ ๋จ์ํํฉ๋๋ค.
์ฃผ์ ๋ชฉ์
โข
๋ณต์กํ ์๋ธ์์คํ
์ ๋ํ ๋จ์ํ๋ ์ธํฐํ์ด์ค ์ ๊ณต
โข
์๋ธ์์คํ
๊ฐ์ ๊ฒฐํฉ๋ ๊ฐ์
โข
ํด๋ผ์ด์ธํธ์ ์๋ธ์์คํ
๊ฐ์ ์์กด์ฑ ์ต์ํ
ํน์ง
โข
๋จ์ผ ์ง์
์ ์ ํตํ ์๋ธ์์คํ
์ ๊ทผ
โข
์๋ธ์์คํ
์ ๋ณต์ก์ฑ์ ์บก์ํ
โข
ํด๋ผ์ด์ธํธ ์ฝ๋ ๋จ์ํ
โข
๋์จํ ๊ฒฐํฉ ๊ตฌ์กฐ ๊ตฌํ
์์ ์ฝ๋
// ํผ์ฌ๋ ํด๋์ค
public class HomeTheaterFacade {
private Light light;
private TV tv;
private AudioSystem audio;
public HomeTheaterFacade(Light light, TV tv, AudioSystem audio) {
this.light = light;
this.tv = tv;
this.audio = audio;
}
public void watchMovie() {
light.dim();
tv.turnOn();
audio.setSurroundSound();
audio.setVolume(10);
}
public void endMovie() {
light.bright();
tv.turnOff();
audio.turnOff();
}
}
Java
๋ณต์ฌ
์ฝ๋ ์ค๋ช
์ ์์๋ ํ์์ดํฐ ์์คํ
์ ๊ตฌํํ ํผ์ฌ๋ ํจํด์ ์์์
๋๋ค.
โข
HomeTheaterFacade ํด๋์ค: ์กฐ๋ช
(Light), TV, ์ค๋์ค ์์คํ
(AudioSystem)์ด๋ผ๋ ์ธ ๊ฐ์ง ์๋ธ์์คํ
์ ํตํฉํ์ฌ ๊ด๋ฆฌํ๋ ํผ์ฌ๋ ํด๋์ค์
๋๋ค.
โข
watchMovie() ๋ฉ์๋: ์ํ ์์ฒญ์ ์ํ ๋ชจ๋ ์๋ธ์์คํ
์ ํ ๋ฒ์ ์ค์ ํฉ๋๋ค.
โฆ
์กฐ๋ช
์ ์ด๋ก๊ฒ ์กฐ์
โฆ
TV ์ ์ ์ผ๊ธฐ
โฆ
์๋ผ์ด๋ ์ฌ์ด๋ ์ค์
โฆ
๋ณผ๋ฅจ ๋ ๋ฒจ ์กฐ์
โข
endMovie() ๋ฉ์๋: ์ํ ์์ฒญ ์ข
๋ฃ ์ ๋ชจ๋ ์์คํ
์ ํ ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค.
โฆ
์กฐ๋ช
์ ๋ฐ๊ฒ ์กฐ์
โฆ
TV ์ ์ ๋๊ธฐ
โฆ
์ค๋์ค ์์คํ
์ข
๋ฃ
์ด์ฒ๋ผ ํผ์ฌ๋ ํจํด์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๋ ๊ฐ ์๋ธ์์คํ
์ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ดํ ํ์ ์์ด, ํผ์ฌ๋๊ฐ ์ ๊ณตํ๋ ๊ฐ๋จํ ๋ฉ์๋๋ง์ผ๋ก ๋ณต์กํ ์์คํ
์ ์ฝ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.