โ๏ธ ์ ๋ต ํจํด
๐ฅน ์ ๋ต ํจํด์ด๋
์ฌ๊ธฐ์ ๊ธฐ ์กฐ์ฌํ ๋ฐ๋ก๋ ์ ๋ตํจํด์ ์๋์๊ฐ๋ค
๋์ผ ๊ณ์ด์ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ํ๊ณ ,๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์บก์ํํ์ฌ,์ํธ๊ตํ ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๋ค.
๋น์ทํ ๊ณ์ด์ ๊ฐ์ฒด๋ฅผ if/else๋ฌธ ๋์ ์, ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ์ดํด๊ฐ ๋๋ค.
๋ค๋ง ์ด๋ ๊ฒ ํ์๋๋ if/else์ผ๋ก ํ์ง ์๋ ์ฅ์ ์ ์์ง๋ง, ๊ฐ์ฒด์๊ฐ ๋์ด๋๋ค.
๐ if/else์ผ๋ก ์์ฑ
Video๋ผ๋ ๊ฐ์ฒด๊ฐ ์๊ณ , play ๋ฉ์๋์์๋ ์์ฑ์์์ ์ด๋ค๊ฐ์ ๋ฐ๋๋์ ๋ฐ๋ผ log๊ฐ ๋ค๋ฅด๊ฒ ๋์จ๋ค.
๊ทธ๊ฒ์ If/else ๋ฌธ์ผ๋ก ์์ฑํ๋ฉด ์๋์ ๊ฐ๋ค
class Video {
constructor(videoType) {
this.videoType = videoType;
}
play() {
if (this.videoType === "Streaming") {
console.log("Play StreamingVideo");
} else if (this.videoType === "BrandVideo") {
console.log("Play BrandVideo");
} else {
console.log("Play CarPurPoseVideo");
}
}
}
const video1 = new Video("Streaming");
const video2 = new Video("BrandVideo");
const video3 = new Video("CarPurPose");
video1.play();
video2.play();
video3.play();
์์ ๊ฐ์ด ํ์๋๋ if/else๋ฌธ์ผ๋ก ์์ฑํ๋ค๋ฉด ์กฐ๊ฑด์ด ๋์ด๋ ์๋ก ๊ตฌ๋ฌธ์ด ๊ธธ์ด์ง๋ค.
๐ค ์ ๋ตํจํด ์ฌ์ฉ
class Video {
constructor(playAction) {
this.playAction = playAction;
}
play() {
if (!this.playAction) {
console.log("No have a PlayAction");
return;
}
this.playAction();
}
}
class StreamingVideo {
playVideo() {
console.log("Play StreamingVideo");
}
}
class BrandVideo {
playVideo() {
console.log("Play BrandVideo");
}
}
class CarPurPoseVideo {
playVideo() {
console.log("Play CarPurPoseVideo");
}
}
const streamingvideo = new StreamingVideo();
const brandvideo = new BrandVideo();
const carpurposevideo = new CarPurPoseVideo();
const video1 = new Video(streamingvideo.playVideo);
const video2 = new Video(brandvideo.playVideo);
const video3 = new Video(carpurposevideo.playVideo);
video1.play();
video2.play();
video3.play();
์ผ๋จ if/else์ ์๋ ๊ฒ๋ค์ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ก ๋ง๋ค์๋ค.
- StreamingVideo
- BrandVideo
- CarPurPoseVideo
๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๊ฐ์ฒด์ playAction์ Video์ ์ธ์๋ก ๋๊ฒจ์ฃผ์๊ณ , Video์ ๊ฐ์ฒด์ Play๋ฉ์๋๋ฅผ ํตํด, ์ธ์๋ก ์ ๋ฌ๋ ๊ฒ์ ์คํํ ์ ์๋ค.
ํ์คํ if/else์ผ๋ก ๋ง๋ค์ด์ง๋ ๊ฒ๋ณด๋ค๋ ๊ด๋ฆฌ๊ฐ ํธํด์ก์ง๋ง, ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.