๐ ๋ชฉ์ฐจ
- Introduction
- Module Pattern ์ด๋?
- Moudle Pattern ๊ตฌํ
- Module Pattern์ ์ฅ๋จ์
- Conclusion
- Reference
๐ Introduction
์๋ ํ์ธ์! ์ด๋ฒ ํฌ์คํ ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ module pattern์ ๋ํด์ ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค.๐ Singleton ํจํด๊ณผ๋ ๋น์ทํ์ง๋ง Singleton์ฒ๋ผ ํ๋์ instance๋ง ๋ง๋๋๊ฒ์ด ์๋ ๋ค์์ instance๋ฅผ ๋ง๋๋ ๊ฒ์ด module pattern ์ ๋๋ค!
๐ Module Pattern ์ด๋?
Module pattern์ด๋ ์ ์ฒด ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ถ๋ฅผ ๋ ๋ฆฝ๋ ์ฝ๋๋ก ๋ถ๋ฆฌํ์ฌ ๋ง๋๋ ๊ฒ ์ ๋๋ค. ๋ค๋ฅธ ์ฌํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ฒ๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ ๊ทผ ์ ํ์(public, private,...)๊ฐ ์๊ธฐ ๋๋ฌธ์ closure๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํฉ๋๋ค.
๐ Module Pattern ๊ตฌํ
๊ฐ๋จํ๊ฒ countModule
์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
const countModule = (() => {
// privacy
let count = 0;
return {
increment: () => {
count++;
console.log(count);
},
decrement: () => {
count--;
console.log(count);
}
}
})();
countModule.increment(); // 1
countModule.decrement(); // 0
console.log(countModule.count) // undefined
countModule
์ ์ด๋ ๊ฒ ๊ตฌํ์ ํด๋ณผ์ ์์ต๋๋ค. count
๋ณ์๋ privateํ๊ฒ ๋์ด์ง๋๋ค. (testMoudle.count === undefined ์ธ๊ฑธ๋ก ์์ ์์ต๋๋ค.)
๊ฐ๋จํ๊ฒ return ์๋๋ public ์๋ private์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์ต๋๋ค. ๋ค์์ countModule
์์ private ํจ์๋ ํ๋ฒ ์ ์ธํด๋ณผ๊ฒ์!
const countModule = (() => {
// private variable
let count = 0;
// private function
const reset = () => {
count = 0;
};
return {
increment: () => {
count++;
console.log(count);
},
decrement: () => {
count--;
console.log(count);
},
makeCount100: () => {
reset();
count += 100;
console.log(count);
}
}
})();
countModule.increment(); // 1
countModule.decrement(); // 0
console.log(countModule.count); // undefined
countModule.makeCount100(); // 100
console.log(countModule.reset); // undefined
์ด๋ฐ์์ผ๋ก privateํ function๋ ๋ง๋ค ์ ์์ต๋๋ค.
๐ Module Pattern์ ์ฅ๋จ์
์ฅ์
- private ๋ณ์๋ฅผ ๋ง๋ค ์ ์๋ค!
- ๊ฐ์ฒด์งํฅ ๊ด์ ์ ๊ฐ๋ฐ์๋ค์ ๊ฐ๋ ์ฑ์ ๋์ธ๋ค.
๋จ์
- private๊ณผ public ๋ณ์ ์ ๊ทผ์ด ๋ค๋ฅด๋ค.
- privateํ ๋ณ์๋ค์ ๋ํ ํ ์คํธ๊ฐ ์ด๋ ต๋ค.
๐ Conclusion
์ด๋ฒ ํฌ์คํ ์์๋ module pattern์ ๋ํด์ ์์๋ดค์ต๋๋ค. ์ ๊ฒฝ์ฐ Module pattern์ ์ด์ฉํด์ vuex store๋ฅผ ์์ฑํ๋๋ฐ ์ข๋ ๋์์ ์คฌ์์ต๋๋ค. ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์์ ๋ง๋์~๐
๐ Reference
'Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Mediator Pattern (0) | 2020.10.23 |
---|---|
Observer Pattern (0) | 2020.10.19 |
Singleton Pattern (0) | 2020.10.05 |
Constructor Pattern (0) | 2020.09.24 |
Vue Design Patterns - Builder Director Pattern (0) | 2020.09.05 |