java 設(shè)計模式之State(狀態(tài)模式)
java 設(shè)計模式之State(狀態(tài)模式)
在狀態(tài)模式中,一個類的行為基于它的狀態(tài)的改變而改變。狀態(tài)模式歸屬于行為型模式。
在下面的實例中,我們創(chuàng)建了一個接口State,定義了一個操作方法,兩個實現(xiàn)類StartState和StopState。另外,創(chuàng)建了一個上下文類Context,這個類關(guān)聯(lián)到State類。UML類圖如下所示:
//狀態(tài)類 public interface State { public void doAction(Context context); } //實現(xiàn)類StartState.java public class StartState implements State { public void doAction(Context context) { System.out.println("Player is in start state"); context.setState(this); } public String toString(){ return "Start State"; } } //實現(xiàn)StopState.java public class StopState implements State { public void doAction(Context context) { System.out.println("Player is in stop state"); context.setState(this); } public String toString(){ return "Stop State"; } } //上下文Context.java 實際運用時可自行更改 public class Context { private State state; public Context(){ state = null; } public void setState(State state){ this.state = state; } public State getState(){ return state; } } //測試類 public class StatePatternDemo { public static void main(String[] args) { Context context = new Context(); StartState startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); } }
輸出結(jié)果
Player is in start state Start State Player is in stop state Stop State
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
java servlet結(jié)合mysql搭建java web開發(fā)環(huán)境
之前寫過一篇 servlet+oracle的文章,但是那是因為公司有可能接那么一個項目,然后我當時也比較閑,所以隨便學了下,那玩意是白去研究了,因為公司后面并沒接到那項目。2015-12-12java輸出1~100之間的全部素數(shù)的5種方式總結(jié)
這篇文章主要介紹了java輸出1~100之間的全部素數(shù)的5種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02spring boot加入攔截器Interceptor過程解析
這篇文章主要介紹了spring boot加入攔截器Interceptor過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-102020最新IDEA SpringBoot整合Dubbo的實現(xiàn)(zookeeper版)
這篇文章主要介紹了2020最新IDEA SpringBoot整合Dubbo(zookeeper版),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09mybatis plus saveOrUpdate實現(xiàn)有重復數(shù)據(jù)就更新,否則新增方式
這篇文章主要介紹了mybatis plus saveOrUpdate實現(xiàn)有重復數(shù)據(jù)就更新,否則新增方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12SpringBoot異步線程父子線程數(shù)據(jù)傳遞的5種方式
這篇文章主要介紹了SpringBoot異步線程父子線程數(shù)據(jù)傳遞的5種方式,文中通過代碼示例給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-08-08Java Web程序?qū)崿F(xiàn)返回JSON字符串的方法總結(jié)
Java Web服務器端只要把Java對象數(shù)據(jù)轉(zhuǎn)成JSON字符串,把JSON字符串以文本的形式通過response輸出即可,2016-05-05