전략 패턴

박상준·2022년 8월 30일
0

면접지식

목록 보기
21/32

전략 패턴(Strategy pattern)

정책 패턴(Policy pattern) 이라도고 하며, 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다.

컨텍스트 : 프로그래밍에서 컨텍스트는 상황, 맥락, 문맥을 의미하며 개발자가 어떠한 작업을 완료하는 데 필요한 모든 관련 정보를 말한다.

Node.js 의 PassPort

전략패턴을 활용한 라이브러리

Node.js 에서 인증 모듈을 구현할 때 쓰는 미들웨어 라이브러리로, 여러 가지 전략을 기반으로 인증이 가능함.

서비스 내의 회원가입된 아이디와 비밀번호를 기반으로 인증하는 LocalStrategy 전략페이스북, 네이버 등 다른 서비스를 기반으로 인증하는 OAuth 전략 등을 지원한다.

자바 - 인터페이스의 상속을 통해

factorio thumbnail 커피 머신

public interface CoffeeStrategy {
    void brew();
}
public class AmericanoStrategy implements CoffeeStrategy {

    private static final String AMERICANO = "아메리카노";
    
    @Override
    public String brew() {
        // 아메리카노를 내리는 기능
        return AMERICANO;
    }
}
public class CafeLatteStrategy implements CoffeeStrategy {

    private static final String CAFE_LATTE = "카페라떼";

    @Override
    public String brew() {
        // 카페라떼를 내리는 기능
        return CAFE_LATTE;
    }
}
public class CoffeeMachine {
    
    public String brew(CoffeeStrategy coffeeStrategy) {
        return coffeeStrategy.brew();
    }
    
}
public class Road {

    public static void main(String[] args) {
    	// 도로 위에 커피머신을 설치합니다
        CoffeeMachine coffeeMachine = new CoffeeMachine();
        
        // 아메리카노 버튼을 누르면 아메리카노 전략을 넣어 아메리카노를 추출해줍니다
        String americano = coffeeMachine.brew(americanoButton());
        System.out.println(americano);

        // 카페라떼 버튼을 누르면 카페라떼 전략을 넣어 카페라떼를 추출해줍니다
        String cafelatte = coffeeMachine.brew(cafeLatteButton());
        System.out.println(cafelatte);
    }

    public static CoffeeStrategy americanoButton() {
        return new AmericanoStrategy();
    }

    public static CoffeeStrategy cafeLatteButton() {
        return new CafeLatteStrategy();
    }
}
profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글