전략 패턴 (strategy pattern)

JunSeong_Park·2023년 1월 3일
0
post-custom-banner

전략패턴이란?

  • 전략 메서드를 가진 전략 객체
  • 전략 객체를 사용하는 컨텍스트 ( 전략 객체의 사용자/소비자 )
  • 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 ( 제3자, 전략 객체의 공급자 )

하나씩 코드로 직접 이해해보자

package DesignPattern.strategyPattern;

public class StrategyGun implements Strategy{

    @Override
    public void runStrategy() {
        System.out.println("GUN");
    }
}

class StrategySword implements Strategy{

    @Override
    public void runStrategy() {
        System.out.println("SWORD");
    }
}

class StrategyBow implements Strategy{

    @Override
    public void runStrategy() {
        System.out.println("BOW");
    }
}

전략 메서드를 가진 전략 객체

package DesignPattern.strategyPattern;

public class Soldier {
    void runContext(Strategy strategy) {
        System.out.println("시작");
        strategy.runStrategy();
        System.out.println("종료");
    }
}

전략 객체를 사용하는 컨텍스트 ( 전략 객체의 사용자/소비자 )

package DesignPattern.strategyPattern;

public class Client {
    public static void main(String[] args) {
        Strategy strategy = null;
        Soldier soldier = new Soldier();

        strategy = new StrategyGun();
        soldier.runContext(strategy);
        System.out.println();

        strategy = new StrategySword();
        soldier.runContext(strategy);
        System.out.println();

        strategy = new StrategyBow();
        soldier.runContext(strategy);

    }
}

전략 객체를 생성해 컨텍스트에 주입하는 클라이언트 ( 제3자, 전략 객체의 공급자 )

클라이언트가 콘텍스트에게 전략을 조달한다

=

Client 가 soldier 에게 strategy 하위 클래스를 조달한다

이해가 어려우면 클래스 다이어그램과 시퀀스 다이어그램을 봐보자

전략 패턴 : 클라이언트가 전략을 생성해 전략을 실행할 컨텍트스에 주입하는 패턴

전략 패턴은 개방 폐쇄 원칙 ( OCP ) 과 의존 역전 원칙 ( DIP ) 이 적용

출처 : 스프링을 입문을 위한 자바

profile
안녕하세요 언어에 구애 받지 않는 개발자가 되고 싶은 박준성입니다
post-custom-banner

0개의 댓글