JavaScript - ์ ๋ต ํจํด ๐ง
7044 ๋จ์ด tutorialwebdevjavascript
์ ๋ต ํจํด์ด ์ฐ๋ฆฌ์๊ฒ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ํ ์ ์๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํผํ๊ณ ์ถ์ต๋๋ค:
const AUTH_METHODS = {
GOOGLE: 'GOOGLE',
FACEBOOK: 'FACEBOOK',
FORM_SUBMISSION: 'FORM_SUBMISSION'
}
const googleAuth = _ => {
// ... Google auth code here
}
const facebookAuth = _ => {
// ... Facebook Auth code here
}
const formSubmissionAuth = _ => {
// ... Form submission code here
}
const handleAuthentication = method => {
if (method === AUTH_METHODS.GOOGLE) {
googleAuth()
} else if (method === AUTH_METHODS.FACEBOOK) {
facebookAuth()
} else {
formSubmissionAuth()
}
}
์ ๋ต ํจํด์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์์ต๋๊น?
const AUTH_METHODS = {
GOOGLE: 'GOOGLE',
FACEBOOK: 'FACEBOOK',
FORM_SUBMISSION: 'FORM_SUBMISSION'
}
const googleAuth = _ => {
// ... Google auth code here
}
const facebookAuth = _ => {
// ... Facebook Auth code here
}
const formSubmissionAuth = _ => {
// ... Form submission code here
}
const authenticationStrategy = method => ({
[AUTH_METHODS.GOOGLE]: googleAuth,
[AUTH_METHODS.FACEBOOK]: facebookAuth,
[AUTH_METHODS.FORM_SUBMISSION]: formSubmissionAuth
})[method]
const strategy = authenticationStrategy(AUTH_METHODS.GOOGLE)
strategy()
๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ์ ๋ต ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
const authenticationStrategy = method => ({
[AUTH_METHODS.GOOGLE]: googleAuth,
[AUTH_METHODS.FACEBOOK]: facebookAuth,
[AUTH_METHODS.FORM_SUBMISSION]: () => formSubmissionAuth({ username: 'javascript', password: 'strategyPattern' })
})[method]
์ ๋ต ํจํด์ ํค/๊ฐ ์์ด ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ "์คํ"ํ ํค๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋ง์ง๋ง์
[method]
์
๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ ๋ฌํ๋ ๊ฐ์ด ๋ฌด์์ด๋ ๊ฐ์ ํจ์์ ์ข
์์ฑ์
๋๋ค. ํด๋น ๊ฐ์ฒด ํค์ ๋งคํ๋ฉ๋๋ค.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(JavaScript - ์ ๋ต ํจํด ๐ง ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/emi_castellano/javascript-strategy-pattern-f79ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค