전략 패턴
정리
전략 패턴이란?
- 전챡 패턴(strategy pattern) 또는 정책 패턴(policy pattern)이라고 함
 - 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 전략이라고 부르는 
캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴 
passport 라이브러리의 전략 패턴
- passport (opens in a new tab)는 Node.js에서 인증 모듈을 구현할 때 쓰는 미들웨어 라이브러리로, 여러 가지 '전략'을 기반으로 인증할 수 있게 한다
 - LocalStrategy 전략(회원가입된 아이디와 비밀번호를 기반으로 인증)과 OAuth 전략 등을 지원한다
 
var passport = require('passport')
    , LocalStrategy = require('passport-local').Strategy;
 
passport.use(new LocalStrategy(
    function(username, password, done) {
        User.findOne({ username: username }, function (err, user) {
          if (err) { return done(err); }
            if (!user) {
                return done(null, false, { message: 'Incorrect username.' });
            }
            if (!user.validPassword(password)) {
                return done(null, false, { message: 'Incorrect password.' });
            }
            return done(null, user);
        });
    }
));passport.use(new LocalStrategy(...))처럼 passport.use() 메서드에 '전략'을 매개변수로 넣어서 로직을 수행한다