设计模式——状态模式
来源:互联网 发布:sql语句转换成linq 编辑:程序博客网 时间:2024/05/21 07:05
状态模式可以使对象状态发生改变时,体现不同的行为。
用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。
可以举例说明,代码如下:
//抽象状态类abstract class Animal{public abstract void run();}//状态类class Tiger extends Animal{public void run(){System.out.println("a tiger is running");}}//状态类class Lion extends Animal{public void run(){System.out.println("a lion is running");}}class Scene {private Animal ani = new Tiger();//向上转型,利用多态//状态切换public void change(){ani = new Lion();}//执行行为public void act(){ani.run();}}public class Demo1{public static void main(String[] args) {Scene scene = new Scene();scene.act();scene.change();scene.act();}}类Scene中包含一个状态字段,对应一个抽象的状态对象。有2个状态对象Tiger和Lion继承它,并定义了各自不同的行为。行为执行时,由于发生多态,状态对象改变时,行为也发生了改变。
程序输出结果如下:
a tiger is runninga lion is running
总结:
用继承表达行为间的差异,用字段表达状态上的变化。上例中Tiger与Lion分别通过继承实现了不同的行为,而Scene中通过字段的重新赋值实现了状态的改变,最终得到我们想要的效果。
阅读全文
0 0
- 设计模式—状态模式
- 设计模式—状态模式
- 设计模式——状态设计模式
- 设计模式——状态模式(State)
- 设计模式——状态模式
- java设计模式——状态模式
- PHP设计模式——状态模式
- 设计模式之——状态模式
- 设计模式之——状态模式
- 设计模式(19)——状态模式
- 设计模式——状态模式
- C++设计模式——状态模式
- 设计模式——状态模式
- 设计模式——状态模式
- 设计模式——状态模式
- 设计模式——状态模式
- 设计模式<五>——状态模式
- PHP设计模式——状态模式
- PHP九九乘法表
- 1065. 单身狗(25)
- int(sys.argv[1]) IndexError: list index out of range报错的原因
- android获取通知权限
- nn bp
- 设计模式——状态模式
- cuda7.5的 安装、测试、visual studio2013环境中的配置
- vue2.0 axios前后端数据处理
- 爬坑之Android Studio 下使用crosswalk,使用maven依赖库打包
- JVM类加载机制
- 混合开发hybrid app(3)怎么增强webview安全功能 和 适配不同手机分辨率的html
- Mybatis调用存储过程
- Tomcat 8 启动startup.bat闪退的解决方法
- 写作建议