ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ง์ ๋์์ธ ํจํด๋ค์ด ์์ง๋ง ๊ทธ์ค์ ๊ต์ฅํ ์์ฃผ ์ฐ์ด๊ณ ์ฐ๋ฉด ํธ๋ฆฌํ Singletonํจํด์ ๋ํด ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค.
์ฑ๊ธํคํจํด์ ๋ณดํต ํน์ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ฌ๋ฌ๊ตฐ๋ฐ์์ ์ฌ์ฉํ ์ผ์ด ๋ง์ ๋ ๊ทธ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์ฝ๊ฒ ์ฌ์ฉ๊ฐ๋ฅํ ๋์์ธ ํจํด์ ๋๋ค.
์๋ฅผ๋ค๋ฉด ์ฌ์ฉ์์ ๋ก๊ทธ์ธ์ ๋ณด๋ฅผ ๊ณ์ํด์ ์ฌ์ฉํด์ผํ ๋ ์ด๋ฌํ ํจํด์ด ๋์์ด ๋ ์ ์์ต๋๋ค. ์ ๊ฐ ์ฌ์ฉํ ์์์ฝ๋์ ๋๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | var SingletonClass = (function() { var mName,mNick,mId,mPwd,mIsLogin,instance; function SingletonClass() { } //setter this.__defineSetter__("mName",function(val){this.mName=val;}); this.__defineSetter__("mNick",function(val){this.mNick=val;}); this.__defineSetter__("mId",function(val){this.mId = val;}); this.__defineSetter__("mPwd",function(val){this.mPwd = val;}); this.__defineSetter__("mIsLogin",function(val){this.mIsLogin = val;}); //getter this.__defineGetter__("mName",function(){return mName;}); this.__defineGetter__("mNick",function(){return mNick;}); this.__defineGetter__("mId",function(){return mId;}); this.__defineGetter__("mPwd",function(){return mPwd;}); this.__defineGetter__("mIsLogin",function(){return mIsLogin;}); return { getInstance: function() { if(instance == undefined){ instance = new SingletonClass(); instance.constructor = null; } return instance; } }; })(); | cs |
์ ๊ฐ์ ๊ฒฝ์ฐ๋ singleton ํจ์ ์์ getter setter ํจ์๋ฅผ ๋ฃ์ด์ ํด๋น ๊ฐ์ฒด(์ธ์คํด์ค) ์ ๋ณด๋ฅผ ๊ทธ๋๊ทธ๋ ์ ์ดํ ์ ์๋ ํํ๋ก ๋ง๋ค์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ์ฑ๊ธํคํจ์๋ฅผ ํธ์ถํ ๋ ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฐ์ฒด(์ธ์คํด์ค)๊ฐ ์๋ค๋ฉด ๋์ํ์ง ์๊ณ , ๋ง๋ค์ด์ง ์ด๋ ฅ์ด ์์ ๋
์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด returnํ๋ ํํ์ ๋๋ค. ์ด๋ ๊ฒ ์ฑ๊ธํคํจ์๋ฅผ ๋ง๋ค์ด๋์ผ๋ฉด ํธ์ถ์ ์ํ๋ ๊ณณ์์ ์ฌ์ฉ์ ๋ชจ๋ํํ๋ก ์์ฝ๊ฒ ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ๋ค๋ฉด
1 2 3 4 5 6 7 8 9 | //singleton var member = require('./singleton'); app.get('/logout',function(req,res){ member.mId=null; member.mPwd = null; member.mName = null; member.mNick = null; member.mIsLogin = false; res.render('index'); }); | cs |
๋งจ ์์๊ฐ์ด ์ฌ์ฉ์ ๋ชจ๋ํํ๋ก ์ ์ธ์ ํ์ฌ member๋ผ๋ ๋ณ์์ singletonํจ์์์ ๋ง๋ค์ด์ง ๊ฐ์ฒด์ ๋ณด๋ฅผ ๋ด์ต๋๋ค.
๊ทธ๋ ๊ฒ๋๋ฉด singletonํจ์์์ ์ ์ธํ๋ ๋ณ์์ ๋ณด๋ค์ getter, setterํจ์๋ฅผ ํตํด ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์์ ์๋ logout์ด๋ผ๋ ๋ผ์ฐํฐ๋ฅผ ๋ค์ด์์ ๋ member์ ๊ฐ์ฒด์ ๋ณด๋ฅผ ์ด๊ธฐํ์ํค๋ ์์ ์ ๋๋ค. member์ ์ ๋ณด๋ค์ setter๋ฅผ ํตํด ์ํ๋ ๊ฐ์ผ๋ก ๋ฐ๊พธ๋ ํํ์ ๋๋ค. ์ฐธ๊ณ ๋ก getter๋ ๋ฑํธ๋ฅผ ๋บ ํํ๋ก ์ ์ธํ๋ฉด member์ธ์คํด์ค์ ํน์ ๋ณ์์ ๋ณด์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
-- member.mId = 'abcd' ; =>setter
-- var id = member.mId; =>getter
- Total
- Today
- Yesterday
- backend-framework
- Request_Limit_Exceeded
- nestjs/cli
- docker mysql
- Promise bulk
- nestjs typeorm
- Spring Async
- Spring
- ๊ธฐ์์ฒญAPI
- nestjs configService
- android
- nestjs directory
- sequelize
- @nestjs/config
- node.js backend
- Promise error
- nestjs doc
- nestjs config
- nestjs module
- node.js
- nestjs project
- DeferredResult
- typeorm
- typeorm ์ฐ๊ฒฐ
- ๋น๋๊ธฐ ์์ฒญ
- foreignkey
- NestJS
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๊ณ ๋ฆฌ์ฆ
- JavaScript
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |