티스토리 뷰

반응형

참조:https://velog.io/@max9106/Java-%EC%A0%84%EB%9E%B5%ED%8C%A8%ED%84%B4strategy-pattern

 

[Java] 전략패턴(strategy pattern)

디자인 패턴의 꽃이라고 불릴만큼 많이, 다양하게 사용하는 패턴이다.알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 즉 기존 코드의 변경 없이도 실제 로직을 바꿀

velog.io

본 패턴은 가장 많이 사용하는 패턴 중에 하나이다.

 

전략 패턴이란?

디자인 패턴의 꽃이라고 불릴만큼 많이,다양하게 사용하는 패턴이다

알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다.

즉 기존 코드의 변경 없이도 실제 로직을 바꿀 수 있게 해주는 패턴이다.

 

public interface MoveStrategy {
    int moveValue();
}

 

public class RandomMove implements MoveStrategy {
    private static final int MIN_NUMBER = 0;
    private static final int MAX_NUMBER = 9;

    @Override
    public int moveValue() {
        return RandomUtils.nextInt(MIN_NUMBER, MAX_NUMBER);
    }
}

 

public class UnconditionalMove implements MoveStrategy {
    private static final int MOVE_STANDARD = 4;

    @Override
    public int moveValue() {
        return MOVE_STANDARD;
    }
}

 

public class Car {
    private static final int MOVING_BASELINE = 4;
    private int position;
    
    /*...*/
    
    public void move(MoveStrategy moveStrategy) {
    	if (moveStrategy.moveValue() >= MOVING_BASELINE) {
            this.position++;
        }
    }
}

 

public class Application {
    public static void main(String[] args) {
		Car car = new Car();
        
        car.move(new RandomMove());
        car.move(new UnconditionalMove());
    }
}
반응형

'SpringBoot' 카테고리의 다른 글

DI  (0) 2021.08.12
REST API  (0) 2021.08.11
[Design Pattern]Facade Pattern  (0) 2021.08.10
[Design Pattern]Observer Pattern  (0) 2021.08.09
[Design Pattern]Decorator Pattern  (0) 2021.08.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함