- 전략 말 그대로 상황에 맞춰 다른 행동을 취하는 패턴
- 객체의 행위를 전략이라 칭하는 알고리즘을 내부에서 바꿔주며 상호 교체가 가능하게 해주는 패턴
- Node.js의 인증 기능을 구현하기 위해 사용하는 passport 라이브러리에서 전략 패턴을 쓰는걸 볼 수 있다
var passport = require('passport')
var LocalStrategy = require('passport-local').Strategy
var TwitterStrategy = require('passport-twitter').Strategy
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username }, function(err, user) {
if (err) { return done(err) }
...
})
}
))
// 다른 전략을 취하고 싶다면 Strategy 다른 코드로 변경할 수 있다
passport.use(new TwitterStrategy(
function(token, tokenSecret, profile, cb) {
User.findOrCreate({ twitterId: profile.id }, function (err, user) {
return cb(err, user);
});
}
))