《設計模式之禪》讀書筆記 21 狀態模式

2021-08-16 20:17:55 字數 1718 閱讀 6751

定義

當乙個物件內在狀態改變時允許其改變行為,這個物件看起來像改變了其類。

類圖

state抽象狀態角色

介面或抽象類,負責物件狀態定義,並且封裝環境角色以實現狀態切換。

concretestate具體狀態角色

每乙個具體狀態必須完成兩個職責:本狀態的行為管理以及趨向狀態處理,通俗地說,就是本狀態下要做的事情,以及本狀態如何過渡到其他狀態。

context環境角色

定義客戶端需要的介面,並且負責具體狀態的切換。

實現抽象狀態角色:

package com.sigalhu.statepattern;

public

abstract

class

state

//行為1

public

abstract

void

handle1();

//行為2

public

abstract

void

handle2();

}

具體狀態角色:

package com.sigalhu.statepattern;

public

class

concretestate1

extends

state

@override

public

void

handle2()

}

package com.sigalhu.statepattern;

public

class

concretestate2

extends

state

@override

public

void

handle2()

}

環境角色:

package com.sigalhu.statepattern;

public

class

context

//設定當前狀態

public

void

setcurrentstate(state currentstate)

//行為委託

public

void

handle1()

public

void

handle2()

}

場景類:

package com.sigalhu.statepattern;

public

class

client

}

優點 缺點

如果完全使用狀態模式就會有太多的子類,造成類膨脹,不好管理。

注意狀態模式適用於當某個物件在它的狀態發生改變時,它的行為也隨著發生比較大的變化,也就是說在行為受狀態約束的情況下可以使用狀態模式,而且使用時物件的狀態最好不要超過5個。

原始碼:

《設計模式之禪》讀書筆記 策略模式

策略模式 strategy pattern 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。對於策略模式來說了解清楚它三個角色的作用,基本就差不多了。策略模式的三個角色 它也叫做上下文角色,起承上啟下封裝作用,遮蔽高層模組對策略 演算法的直接訪問,封裝可能存在的變化。策略 演算法家族...

《設計模式之禪》讀書筆記 12 裝飾模式

定義 裝飾模式可以動態地給乙個物件新增一些額外的職責。類圖 component抽象構件 component是乙個介面或者是抽象類,就是定義我們最核心的物件,也就是最原始的物件。concretecomponent具體構件 concretecomponent是最核心 最原始 最基本的介面或抽象類的實現。...

設計模式之禪讀書筆記 建立類模式

23種設計模式可以分為三大類.建立類,結構類,行為類.建立類模式 都能夠提供物件的建立和管理職責 單例模式 保持在記憶體中只有乙個物件 工廠方法模式 抽象工廠模式 建造者模式 原型模式 通過複製的方式產生乙個新的物件 單例模式 定義 確保單例類只有乙個例項,而且自行例項化並向整個系統提供這個例項.優...