設計模式之 狀態模式

2021-10-02 03:29:42 字數 1315 閱讀 2069

狀態模式(行為型):對有狀態的物件,把複雜的「判斷邏輯」提取到不同的狀態物件中,允許狀態物件在其內部狀態發生改變時改變其行為。

2.抽象狀態角色:定義乙個介面,用以封裝環境物件中的特定狀態所對應的行為。

3.具體狀態角色:實現抽象狀態所對應的行為。

檔案一般有三種基本狀態,可讀、可寫、可執行,每一種狀態都能做對應的操作,如可讀狀態,能夠讀取檔案內容,可寫狀態能夠寫入內容,每個狀態對應一種行為。

public inte***ce filestate
說明:檔案狀態介面,抽象狀態角色,定義狀態的公共介面。

public class readable implements filestate finally 

return content;

}@override

public boolean changestate(filecontext filecontext)

}

說明:檔案可讀狀態類,具體狀態角色,檔案可讀狀態可進行讀取檔案內容操作。

public class writable implements filestate 

@override

public boolean changestate(filecontext filecontext)

}

說明:檔案可寫狀態類,具體狀態角色,檔案可寫狀態可進行檔案寫入操作。

public class filecontext 

/*** 對檔案進行處理,每個狀態的具體操作都不一樣

* @param str

* @return 如果是讀取,則返回內容

*/public string handel(string str) throws ioexception

public file getfile()

public void setfilestate(filestate filestate)

}

說明:檔案上下文環境類,環境角色,定義檔案操作方法,具體操作通過當前的具體狀態類去進行。

public class statetest 

}

說明:測試及客戶端。

1.當乙個物件的行為取決於它的狀態,並且它必須在執行時根據狀態改變它的行為時,就可以考慮使用狀態模式。

2.乙個操作中含有龐大的分支結構,並且這些分支決定於物件的狀態時。

補充:上述案例中,並未寫可執行,可讀可寫等狀態,此模式是符合開閉原則的,如果要新增其它狀態,直接實現介面進行新增即可。

設計模式之狀態模式

一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...

設計模式之 狀態模式

gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...

設計模式之狀態模式

定義 允許乙個物件在其內部狀態變化時改變它的行為,物件看起來似乎修改了它所屬的類。類圖 說明 context表示環境類,它定義了客戶應用程式感興趣的介面,並維護乙個concretestate子類的例項,這個例項用於定義當前狀態 state表示抽象狀態類,它定義了乙個介面以封裝與context的乙個特...