Java语言设计模式之状态模式(State)
2017-08-25 17:44
661 查看
状态模式:改变对象的行为
一个用来改变类的(状态的)对象。
迹象:几乎所有方法里都出现(相同的)条件(表达式)代码。为了使同一个方法调用可以产生不同的行为,State 模式在代理(surrogate)的生命周期内切换它所对应的实现(implementation)。当你发现,在决定如何实现任何一个方法之前都必须作很多测试的情况下,这是一种优化实现代码的方法。 此外,状态(State)的改变会自动传递到所有用到它的地方,而不需要手工编辑类的方法以使改变生效。
下面的代码演示了 State 模式的基本结构。
代码如下:
StateDemo.java
一个用来改变类的(状态的)对象。
迹象:几乎所有方法里都出现(相同的)条件(表达式)代码。为了使同一个方法调用可以产生不同的行为,State 模式在代理(surrogate)的生命周期内切换它所对应的实现(implementation)。当你发现,在决定如何实现任何一个方法之前都必须作很多测试的情况下,这是一种优化实现代码的方法。 此外,状态(State)的改变会自动传递到所有用到它的地方,而不需要手工编辑类的方法以使改变生效。
下面的代码演示了 State 模式的基本结构。
代码如下:
StateDemo.java
package com.enfo.wd.patterns; 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; } public void service1(){ state.operation1(); state.operation3(); } public void service2(){ state.operation1(); state.operation2(); } public void service3(){ state.operation3(); state.operation2(); } } class Implementation implements State{ @Override public void operation1() { System.out.println("Implementation.operation1()"); } @Override public void operation2() { System.out.println("Implementation.operation2()"); } @Override public void operation3() { System.out.println("Implementation.operation3()"); } } class Implementation1 implements State{ @Override public void operation1() { System.out.println("Implementation.operation1()"); } @Override public void operation2() { System.out.println("Implementation.operation2()"); } @Override public void operation3() { System.out.println("Implementation.operation3()"); } } public class StateDemo { static void run(ServiceProvider sp){ sp.service1(); sp.service2(); sp.service3(); } ServiceProvider sp=new ServiceProvider(new Implementation()); public void test(){ run(sp); sp.changeState(new Implementation1()); run(sp); } public static void main(String[] args) { StateDemo test1=new StateDemo(); test1.test(); } }
相关文章推荐
- java设计模式20——状态模式(State)
- Java设计模式之状态模式(State模式)介绍
- JAVA设计模式——状态模式(State)
- JAVA设计模式(18):行为型-状态模式(State)
- 【java设计模式之State(对应每种状态的行为) 】
- java设计模式之状态 模式State
- Java设计模式——状态模式(State)
- Java从设计模式[本场比赛状态转换武器]状态分析(State)模式
- Java设计模式(19)状态模式(State模式)
- 设计模式解析和实现(C++, java)之二十--状态(state)模式
- java设计模式-状态模式(STATE)
- Java设计模式九:状态模式(State)
- Java设计模式----状态模式(State)
- 读书笔记_java设计模式深入研究 第八章 状态模式 State
- java设计模式-状态模式(State)
- 【JAVA】设计模式之状态模式(State模式)的使用分析
- Java设计模式 状态模式(State)
- Java开发中的23种设计模式之二十:状态模式(State)
- Java设计模式之State(状态模式)
- JAVA设计模式十二:--State(状态模式)