狀態模式和責任鏈模式是真的很像
狀態模式學習鏈結
責任鏈模式和狀態模式對比
#!/usr/bin/python
# coding:utf8
"""狀態模式
"""#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'andy'
"""大話設計模式
設計模式——狀態模式
狀態模式(state pattern):當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類
應用場景:當控制乙個物件的狀態轉換的條件表示式過於複雜時,把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化
(當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變他的行為)
"""class state(object):
def __init__(self):
pass
def write_program(self, w):
pass
class work(object):
def __init__(self):
self.hour = 9
self.curr = forenoonstate()
def set_state(self, s):
self.curr = s
def write_program(self):
self.curr.write_program(self)
class forenoonstate(state):
def write_program(self, w):
if w.hour < 12:
else:
w.set_state(afternoonstate())
w.write_program()
class afternoonstate(state):
def write_program(self, w):
if w.hour < 17:
else:
w.set_state(eveningstate())
w.write_program()
class eveningstate(state):
def write_program(self, w):
if w.hour < 21:
else:
w.set_state(sleepstate())
w.write_program()
class sleepstate(state):
def write_program(self, w):
if __name__=="__main__":
work = work()
work.hour = 9
work.write_program()
work.hour = 15
work.write_program()
work.hour = 20
work.write_program()
work.hour = 22
work.write_program()
python設計模式之狀態模式
狀態模式是一種常用的模式,和名字一樣,可以在呼叫時修改其內部屬性,看起來就像改變了類的狀態 class networkcardstate 基類 defsend self raise notimplementederror defreceive self raise notimplementederr...
設計模式之狀態模式
一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...
設計模式之 狀態模式
gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...