전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 디자인 패턴이다.
예를들어, 회원가입을 하기위해 LocalStrategy를 사용할 수 있지만 OAuth2처럼 구글이나 카카오, 페이스북 등으로 가입하는 방법도 있다.
아래의 코드 예시는 LocalStrategy를 사용하는 코드이다.
같은 passoprt를 사용하는 데 동작에 대한 알고리즘이 다르다. 아래의 코드는 FacebookStrategy이다.
옵저버패턴이란 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려 주는 디자인 패턴이다.
프록시패턴이란 객체가 어떤 대상 객체에 접근하기 전, 그 접근에 대한 흐름을 가로채서 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인패턴이다.