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

관련정보들

StrategyPattern


CategoryPattern

StrategyPattern (last edited 2012-10-08 16:28:18 by 61)

web biohackers.net