Java设计模式-状态模式(State)
生活随笔
收集整理的這篇文章主要介紹了
Java设计模式-状态模式(State)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
核心思想就是:當對象的狀態改變時,同時改變其行為,很好理解!就拿QQ來說,有幾種狀態,在線、隱身、忙碌等,每個狀態對應不同的操作,而且你的好友也能看到你的狀態,所以,狀態模式就兩點:1、可以通過改變狀態來獲得不同的行為。2、你的好友能同時看到你的變化。看圖:
State類是個狀態類,Context類可以實現切換,我們來看看代碼:
package com.xtfggef.dp.state; /** * 狀態類的核心類 * 2012-12-1 * @author erqing * */ public class State { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public void method1(){ System.out.println("execute the first opt!"); } public void method2(){ System.out.println("execute the second opt!"); } } package com.xtfggef.dp.state; /** * 狀態模式的切換類 2012-12-1 * @author erqing * */ public class Context { private State state; public Context(State state) { this.state = state; } public State getState() { return state; } public void setState(State state) { this.state = state; } public void method() { if (state.getValue().equals("state1")) { state.method1(); } else if (state.getValue().equals("state2")) { state.method2(); } } }測試類:
public class Test { public static void main(String[] args) { State state = new State(); Context context = new Context(state); //設置第一種狀態 state.setValue("state1"); context.method(); //設置第二種狀態 state.setValue("state2"); context.method(); } }輸出:
execute the first opt!
execute the second opt!
根據這個特性,狀態模式在日常開發中用的挺多的,尤其是做網站的時候,我們有時希望根據對象的某一屬性,區別開他們的一些功能,比如說簡單的權限控制等。
?
轉載于:https://www.cnblogs.com/hwaggLee/p/4508609.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Java设计模式-状态模式(State)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三:Java之Applet
- 下一篇: 最佳新秀Java(22)——再次了解泛型