博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
状态模式
阅读量:5324 次
发布时间:2019-06-14

本文共 1572 字,大约阅读时间需要 5 分钟。

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。

 

模式中的角色

  上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理。

  抽象状态(State):定义一个接口以封装使用上下文环境的的一个特定状态相关的行为。

  具体状态(Concrete State):实现抽象状态定义的接口。

 

State

package design.pattern.state;public abstract class State {        protected Context context;        public State(Context context) {        this.context = context;    }        public abstract Context handler();}

Context

package design.pattern.state;public class Context {    private State state;        public Context() {        this.state = new ConcreteStateA(this);    }        public void setState(State state) {        this.state = state;    }        public Context action() {        state.handler();        return this;    }}

ConcreteContextA

package design.pattern.state;public class ConcreteStateA extends State {    public ConcreteStateA(Context context) {        super(context);    }    @Override    public Context handler() {        System.out.println("ConcreteStateA");        context.setState((new ConcreteStateB(context)));        return context;    }    }

ConcreteContextB

package design.pattern.state;public class ConcreteStateB extends State {    public ConcreteStateB(Context context) {        super(context);    }    @Override    public Context handler() {        System.out.println("ConcreteStateB");        return context;    }}

Client

package design.pattern.state;public class Client {    public static void main(String[] args) {        new Context().action().action().action();    }}

 

转载于:https://www.cnblogs.com/m2492565210/p/7461565.html

你可能感兴趣的文章
wpf GIS 在地图上画正方形和圆形
查看>>
20 | 与时俱进:浅谈移动应用测试方法与思路
查看>>
雷军:互联网思维
查看>>
php实现单链表
查看>>
struts2笔记08-初识ActionSupport
查看>>
How to: Compile Linux kernel 2.6
查看>>
SpringBoot实现请求拦截(@Aspect切面类和自定义拦截器)
查看>>
记SQL SERVER一次诡异的优化
查看>>
PHPSSO通信一直失败。
查看>>
典型80后的5年工作总结
查看>>
浅入深出的理解了盒模型,哈哈哈
查看>>
完成注册功能
查看>>
Jmeter在linux下的安装
查看>>
20145326蔡馨熤《信息安全系统设计基础》第0周学习总结
查看>>
test
查看>>
Apache Spark on K8s的安全性和性能优化
查看>>
我的操作系统探索之路----------------进程篇(1) ...
查看>>
第三天:执行脚本文件
查看>>
RabbitMQ(1)——基础入门
查看>>
开发ASP.NET Atlas服务器端Extender控件——编写客户端Behavior
查看>>