๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Javascript

๐Ÿ’ฟ ์ƒํƒœ ํŒจํ„ด

by frontChoi 2024. 11. 25.
๋ฐ˜์‘ํ˜•

๐Ÿ•น๏ธ ์ƒํƒœ ํŒจํ„ด์ด๋ž€

๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๊ฒ€์‚ฌํ•ด์„œ ํ–‰์œ„๋ฅผ ๋‹ฌ๋ฆฌํ•˜๋Š”๊ฒƒ์ด ์•„๋‹Œ
์ƒํƒœ๋ฅผ ๊ฐ์ฒดํ™” ํ•˜์—ฌ ์ƒํƒœ๊ฐ€ ํ–‰๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ„์ž„ํ•˜๋Š” ํŒจํ„ด.
๊ฐ์ฒด์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ํ–‰๋™์„ ๋ณ€๊ฒฝ

videoPlayer๋ฅผ ์ƒํƒœํŒจํ„ด ๋งŒ๋“ค๊ธฐ

VideoPlayํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ , setState๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋„๋ก ํ•œ๋‹ค

class VideoPlay {
  constructor(state) {
    // Object.create๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋กœ ๋ฐ›๊ณ , Object.assign์„ ํ†ตํ•ด ๊ฐ์ฒด๋ณต์‚ฌ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค
    this.state = Object.create(Object.assign({ videoplayer: this }, state));
  }
  setState(state) {
    this.state = Object.create(Object.assign({ videoplayer: this }, state));
  }
}

const streaming = {
  pause() {
    return "์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘์ง€";
  },
  play() {
    return "์ŠคํŠธ๋ฆฌ๋ฐ ์žฌ์ƒ";
  },
  changeBrand() {
    this.videoplayer.setState(brand);
  },
};
const brand = {
  pause() {
    return "๋ธŒ๋žœ๋“œ ์ค‘์ง€";
  },
  play() {
    return "don`t use";
  },
  changeStreaming() {
    this.videoplayer.setState(streaming);
  },
};

์ƒํƒœํŒจํ„ด ์‚ฌ์šฉ

const videoState = new VideoPlay(streaming);
console.log(videoState.state.play()); // ์ŠคํŠธ๋ฆฌ๋ฐ ์žฌ์ƒ
console.log(videoState.state.pause()); // ์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘์ง€
videoState.state.changeBrand(); // ๊ฐ์ฒด ์ƒํƒœ ๋ณ€๊ฒฝ
console.log(videoState.state.play()); // don`t use
console.log(videoState.state.pause()); // ๋ธŒ๋žœ๋“œ ์ค‘์ง€
videoState.state.changeStreaming(); // ๊ฐ์ฒด ์ƒํƒœ ๋ณ€๊ฒฝ
console.log(videoState.state.play()); // ์ŠคํŠธ๋ฆฌ๋ฐ ์žฌ์ƒ
console.log(videoState.state.pause()); // ์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘์ง€

์ƒํƒœํŒจํ„ด ๋ณ€๊ฒฝ ์‚ฌ์šฉ ํ›„๊ธฐ

์ƒํƒœํŒจํ„ด์„ ์‚ฌ์šฉํ–ˆ์„๋•Œ ํ™•์‹คํžˆ If/else๋ฌธ ๋ณด๋‹ค๋Š” ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ๋•Œ๋ฌธ์—,ํ™•์žฅ์„ฑ์ด ์ƒ๊ฒผ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด๊ธฐ๋ฐ˜์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ๋•Œ๋ฌธ์—, ๋ณ€๊ฒฝ์—๋„ ์šฉ์ดํ•˜๋‹ค. ๋‹ค๋งŒ ๊ทธ ๋งŒํผ ๊ฐ์ฒด(streaming,brand ๋“ฑ)๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
if/else์œผ๋กœ ์ž‘์„ฑ ํ›„ ์ƒํƒœ๊ฐ€ ๊ณ„์† ์ถ”๊ฐ€๊ฐ€ ๋œ๋‹ค๋ฉด ์‚ฌ์šฉํ•ด๋ณด๋ฉด ๊ดœ์ฐฎ์€ ํŒจํ„ด์ด๋‹ค

๋ฐ˜์‘ํ˜•

'Javascript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Queue์œผ๋กœ ์ž‘์—…์‹คํ–‰  (0) 2025.05.19
โ„๏ธ ์ „๋žต ํŒจํ„ด  (1) 2024.11.19
โ˜‚๏ธ ์ปค๋ง  (0) 2024.05.29
๐ŸŸHls ์ฝ˜ํ…์ธ  ๋ณ€๊ฒฝ ๊ฐ์‹œ  (0) 2023.12.04
navigator.mediaSession  (1) 2023.07.27

๋Œ“๊ธ€