Work & Programming/System Design

[Behavioral Pattern] - Strategy

자전거통학 2024. 5. 16. 10:31

https://refactoring.guru/design-patterns/strategy

 

Strategy

The Strategy pattern lets you isolate the code, internal data, and dependencies of various algorithms from the rest of the code. Various clients get a simple interface to execute the algorithms and switch them at runtime. The Strategy pattern lets you do a

refactoring.guru

 

 

특정 알고리즘 처리를 위해 각 단계, 또는 전체를 객체로 정의하고 이를 외부 설정으로 교체 가능하게 하는 것. 

 

예시

 - Slot Hit Process Logic

 

Note 

 - state를 strategy 의 확장으로 생각할 수도 있다. 

 - command 와 비슷하지만, command는 구현 기능에 제한을 두지 않는다. 하지만 strategy는 동일한 일을 하기 위한 여러가지 과정 구현/교체를 위해 사용한다.

 - decorator는 객체의 skin 변경에 관여하지만, strategy는 내부 로직 변경에 관여 한다. 

 

예제 코드 

더보기
public interface ISlotStrategy
{
    void Run();
}

public class ASlot : ISlotStrategy
{
    public void Run() { }
}
public class BSlot : ISlotStrategy
{
    public void Run() { }
}

public class SlotGame
{
    ISlotStrategy _curStrategy;

    public void SetSlotStrategy(ISlotStrategy strategy)
    {
        _curStrategy = strategy;
    }
    public void ResultProcess()
    {
        _curStrategy.Run();
    }
}

internal class StrategyDemo
{
    public void Run()
    {
        SlotGame game = new SlotGame();
        game.SetSlotStrategy(new ASlot());
        game.ResultProcess();
    }
}

'Work & Programming > System Design' 카테고리의 다른 글

[Behavioral Pattern] - Visitor  (0) 2024.05.16
[Behavioral Pattern] - Template Method  (0) 2024.05.16
[Behavioral Pattern] - State  (0) 2024.05.16
[Behavioral Pattern] - Observer  (0) 2024.05.16
[Behavioral Pattern] - Memento  (0) 2024.05.16