輕松掌握J(rèn)ava狀態(tài)模式
定義:在狀態(tài)模式(State Pattern)中,類的行為是基于它的狀態(tài)改變的。
特點:
1、封裝了轉(zhuǎn)換規(guī)則。
2、枚舉可能的狀態(tài),在枚舉狀態(tài)之前需要確定狀態(tài)種類。
3、將所有與某個狀態(tài)有關(guān)的行為放到一個類中,并且可以方便地增加新的狀態(tài),只需要改變對象狀態(tài)即可改變對象的行為。
4、允許狀態(tài)轉(zhuǎn)換邏輯與狀態(tài)對象合成一體,而不是某一個巨大的條件語句塊。
5、可以讓多個環(huán)境對象共享一個狀態(tài)對象,從而減少系統(tǒng)中對象的個數(shù)。
企業(yè)及開發(fā)和常用框架中的應(yīng)用:
實例:
public class Demo {
public static void main(String[] args) {
Context context = new Context();
State move = new Move();
move.show(context);
State stop = new Stop();
stop.show(context);
}
}
class Context{
private State state;
public void setState(State state){
System.out.println("給物體加持狀態(tài)");
this.state = state;
}
}
interface State{
void show(Context context);
}
class Move implements State{
public void show(Context context) {
context.setState(this);
System.out.println("物體處于運動狀態(tài)");
}
}
class Stop implements State{
public void show(Context context) {
context.setState(this);
System.out.println("物體處于靜止?fàn)顟B(tài)");
}
}
狀態(tài)模式是用于對象狀態(tài)比較多的情況,比如完成一件事的時候有未完成、已完成、進行中、擱置等狀態(tài),這時候就可以考慮是用狀態(tài)模式。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot同時支持HTTPS與HTTP的實現(xiàn)示例
本文主要介紹了SpringBoot同時支持HTTPS與HTTP的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
在SpringBoot中如何利用Redis實現(xiàn)互斥鎖
當(dāng)我們利用Redis存儲熱點數(shù)據(jù)時,突然就過期失效或者被刪除了,導(dǎo)致大量請求同時訪問數(shù)據(jù)庫,增加了數(shù)據(jù)庫的負(fù)載,為減輕數(shù)據(jù)庫的負(fù)載我們利用互斥鎖,本文重點介紹在SpringBoot中如何利用Redis實現(xiàn)互斥鎖,感興趣的朋友一起看看吧2023-09-09
Java數(shù)據(jù)類型實現(xiàn)自動與強制轉(zhuǎn)換的示例代碼
Java數(shù)據(jù)類型之間的轉(zhuǎn)換有自動轉(zhuǎn)換和強制類型轉(zhuǎn)換,這篇文章主要給大家介紹Java數(shù)據(jù)類型如何實現(xiàn)自動轉(zhuǎn)換與強制轉(zhuǎn)換,需要的朋友可以參考下2023-05-05
spring cloud實現(xiàn)Eureka注冊中心的HA的方法
本篇文章主要介紹了spring cloud實現(xiàn)Eureka注冊中心的HA的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01

