DesignPatterns에서 BehavioralPatterns의 하나. 특정 엔티티(context)와 그들의 행위(Strategy)를 분리시키고 이들을 관계짓는다. startegy는 여러개의 sub class들을 포함하고 있으며, context는 어떤 sub class와 연결되는지 몰라도 된다. [[Algorithm]]이 분리된다. 다양한 형태의 [[Algorithm]]들을 하나의 API에 맞도록 동작시킨다. == Structure == == Example in our project == 어떤 데이터들을 가지고 그래프를 그리는 부분이 있다고 하자. 이 부분을 context라 하고, 실제 그래프를 그리는 행위가 strategy가 된다. 그래프는 선그래프일지 바그래프일지 원그래프일지가 startegy의 sub class들이 된다. '''context''' {{{ class Chart: def __init__(self, aStrategy): self.strategy = aStrategy def draw(self) self.strategy.drawOn() }}} '''strategy''' {{{ class DrawStrategy: def drawOn(self): raise NotImplementError class LineDrawStrategy(DrawStrategy): def drawOn(self): pass class CircleDrawStrategy(DrawStrategy): def drawOn(self): pass }}} '''in use example''' {{{ lineChart = Chart(LineDrawStrategy()) lineChart.draw() }}} [[Java]]로 구현한 가위바위보 게임 --> [[StrategyHand.java]] == 관련정보들 == Wiki:StrategyPattern ---- CategoryPattern