Python設計模式 11 狀態模式

2022-05-08 06:42:06 字數 981 閱讀 8321

# 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()

Python設計模式 狀態設計模式

狀態設計模式的簡單示例 優缺點乙個物件可以基於其內部狀態封裝多個行為。狀態模式可以看作在執行時改變物件行為的一種方式。以收音機為例進行說明。收音機具有am fm 切換開關 兩種調頻方式和乙個掃瞄按鈕。因此根據收音機的基本狀態 am fm 當調諧到am或fm頻道時,掃瞄按鈕的行為就會動態的改變。con...

Python 設計模式 狀態模式

狀態模式 狀態模式 state pattern 是設計模式的一種,屬於行為模式。定義 源於design pattern 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系...

python設計模式之狀態模式

狀態模式是一種常用的模式,和名字一樣,可以在呼叫時修改其內部屬性,看起來就像改變了類的狀態 class networkcardstate 基類 defsend self raise notimplementederror defreceive self raise notimplementederr...