Python设计模式(11)-状态模式

# coding=utf-8

# *状态模式:一个方法的判断逻辑太长,就不容易修改。方法过长,其本质就是,
# * 就是本类在不同条件下的状态转移。状态模式,就是将这些判断分开到各个能
# * 表示当前状态的独立类中


class State:
def persion_state(self):
pass


class SomeDay:
def __init__(self):
self.time = 8
self.current = Breakfast()

def set_state(self, temp):
self.current = temp

def persion_state(self):
self.current.persion_state(self)


class Breakfast(State):
def persion_state(self, some_day):
if (some_day.time < 8):
print "吃早饭"
else:
some_day.set_state(Lunch())
some_day.persion_state()


class Lunch(State):
def persion_state(self, some_day):
if (some_day.time < 12):
print "吃午饭"
else:
print "吃晚饭"


if __name__ == "__main__":
some_day = SomeDay()
some_day.time = 11
some_day.persion_state()
some_day.time = 15
some_day.persion_state()
posted @ 2016-03-15 21:49  逆风飞行  阅读(234)  评论(0编辑  收藏  举报