設計模式專欄 狀態模式

2021-10-06 15:54:40 字數 1804 閱讀 3077

狀態模式就是允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。

狀態模式主要解決的是當控制乙個物件狀態的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類中,可以把複雜的判斷邏輯簡化。

狀態操作介面

public inte***ce state
具體狀態物件

public class hasquarterstate implements state 

@override

public void insertquarter()

@override

public void ejectquarter()

@override

public void turncrank()

@override

public void dispense()

}

public class noquarterstate implements state

@override

public void insertquarter()

@override

public void ejectquarter()

@override

public void turncrank()

@override

public void dispense()

}

public class soldoutstate implements state 

@override

public void insertquarter()

@override

public void ejectquarter()

@override

public void turncrank()

@override

public void dispense()

}

public class soldstate implements state 

@override

public void insertquarter()

@override

public void ejectquarter()

@override

public void turncrank()

@override

public void dispense() else}}

上下文物件:

@data

public class gumballmachine

}/**

* 初始化狀態值

*/state state=soldoutstate;

/*** 初始數量值

*/int count=0;

public void insertquarter()

public void ejectquarter()

public void turncrank()

public void dispense()

void releaseball()

}@override

public string tostring()

}

public static void main(string args)

設計模式專欄 策略模式

策略模式 strategy 定義了一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換 策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合。1 策略模式就是用來封裝...

設計模式專欄 單例模式

單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。在計算機系統中,還有 windows 的 站 作業系統中的檔案系統 多執行緒中的執行緒池 顯示卡的驅動程式物件 印表機的後台處理服務 應用程式的日誌物件 資料庫的連線池 的計數器 web 應用的配置物件 應用程式中的對話方塊 系...

設計模式 狀態模式

狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...