State模式探討(筆記心得體會)
定義: 狀態的切換
我的理解就是State模式可以改變物件的行為。
我的理解就是State模式可以改變物件的行為。
State模式在實際使用中比較多,適合"狀態的切換".因為我們經常會使用If elseif else 進行狀態切換, 如果針對狀態的這樣判斷切換反覆出現, 我們就要聯想到是否可以採取State模式了.(節選自“板橋里人 http://www.jdon.com 2002/4/6/ 設計模式之State” 何時使用?) <p class="indent"> |
//: state:StateDemo.java import junit.framework.*; interface State { void operation1(); void operation2(); void operation3(); } class ServiceProvider { private State state; public ServiceProvider(State state) { this.state = state; } public void changeState(State newState) { state = newState; } // Pass method calls to the implementation: public void service1() { state.operation1(); state.operation3(); } public void service2() { state.operation1(); state.operation2(); } public void service3() { state.operation3(); state.operation2(); } } class StateA implements State { public void operation1() { System.out.println("StateA.operation1()"); } public void operation2() { System.out.println("StateA.operation2()"); } public void operation3() { System.out.println("StateA.operation3()"); } } class StateB implements State { public void operation1() { System.out.println("StateB.operation1()"); } public void operation2() { System.out.println("StateB.operation2()"); } public void operation3() { System.out.println("StateB.operation3()"); } } public class StateDemo extends TestCase { static void run(ServiceProvider sp) { sp.service1(); sp.service2(); sp.service3(); } ServiceProvider sp = new ServiceProvider(new StateA()); public void test() { run(sp); // change state .we can change implemention. sp.changeState(new StateB()); run(sp); } public static void main(String args[]) { junit.textui.TestRunner.run(StateDemo.class); } } ///:~ <p class="indent"> |
Object decoupling的解釋。
退耦:指消除或減輕兩個以上物體間在某方面相互影響的方法 Proxy模式最大的用途很顯然被用來控制訪問“被代理者類”物件的實現。這兩種模式很像,因為Proxy模式是一種特殊的State模式,即只有 一種State。 他們的相同之處是:他們都由“代理者類”控制“被代理者類”。 Proxy模式和State模式不同在於State模式有多個實現,而proxy模式只有 一個。Proxy模式被用來控制訪問它的實現,State模式允許你動態的改變實現。 <p class="indent"> |
相關文章
- Proxy模式探討(筆記心得體會)模式筆記
- Iterators模式探討(筆記心得體會)模式筆記
- 單體模式探討(原創)模式
- 唯品會 JIT模式 應用探討模式
- 深入探討單例模式單例模式
- 責任鏈模式探討模式
- Android設計模式探討--Builder模式Android設計模式UI
- Android設計模式探討 Builder模式Android設計模式UI
- oracle 雙機部署模式探討Oracle模式
- Java並行流誤區(學習筆記探討)Java並行筆記
- 心得體會
- Android設計模式探討--單例模式Android設計模式單例
- Android設計模式探討 單例模式Android設計模式單例
- [心得] Effective Java心得筆記Java筆記
- Web 框架的架構模式探討Web框架架構模式
- 探討工廠模式的物件建立模式物件
- github心得體會Github
- B/S模式安全性探討 (轉)模式
- Java原始碼分析:深入探討Iterator模式Java原始碼模式
- 從 setState promise 化的探討 體會 React 團隊設計思想PromiseReact
- [心得]機器學習精華筆記機器學習筆記
- Promise探討Promise
- 開發者探討手遊IAP盈利模式的未來模式
- React學習筆記-State(狀態)React筆記
- 一文探討堆外記憶體的監控與回收記憶體
- #EffectiveJava筆記#閱讀心得Java筆記
- JVM併發機制探討—記憶體模型、記憶體可見性和指令重排序JVM記憶體模型排序
- 深入探討 UndefinedUndefined
- IsPostBack深入探討
- 探討代理模式與Java反射機制的應用模式Java反射
- 對軟體專案管理的探討(1)專案管理
- 對軟體專案管理的探討(2)專案管理
- 對軟體專案管理的探討 (轉)專案管理
- 對軟體專案管理的探討(轉)專案管理
- 4.8 共識演算法的社會學探討演算法
- Laravel 框架學習心得體會Laravel框架
- Oracle Job 使用心得體會Oracle
- 4~6次pta心得體會