https://refactoring.guru/design-patterns/strategy
특정 알고리즘 처리를 위해 각 단계, 또는 전체를 객체로 정의하고 이를 외부 설정으로 교체 가능하게 하는 것.
예시
- 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 |