Who Sets The Next State
A reviewer labels this "Strategy: the order delegates to a swappable policy object".
class Order:
def __init__(self): self.handler = Draft(self)
def submit(self): self.handler.submit()
def pay(self): self.handler.pay()
class Draft:
def __init__(self, order): self.order = order
def submit(self): self.order.handler = AwaitingPayment(self.order)
def pay(self): raise Invalid("submit first")
class AwaitingPayment:
def __init__(self, order): self.order = order
def submit(self): raise Invalid("already submitted")
def pay(self): self.order.handler = Paid(self.order)
class Paid:
def __init__(self, order): self.order = order
def submit(self): raise Invalid("already paid")
def pay(self): raise Invalid("already paid")
Which pattern is it, and which single line settles the question?
Sign in to answer questions and track your progress
Sign In