Python設計模式之狀態模式

2021-09-07 05:06:18 字數 1615 閱讀 8828

狀態模式和責任鏈模式是真的很像

狀態模式學習鏈結

責任鏈模式和狀態模式對比

#!/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...