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

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

用途


状态模式 (State)
当一个对象的
内在状态改变时允许
改变其行为,这个对象看起来像是改变了其类。
状态模式是一种
行为型模式

 

 

结构

图-状态模式结构图

State : 定义一个接口以封装与 Context 的一个特定状态相关的行为。
abstract 
class State {
    
public 
abstract 
void Handle(Context context);
}

ConcreteState : 每一个子类实现一个与 Context 的一个状态相关的行为。

class ConcreteStateA 
extends State {
    @Override
    
public 
void Handle(Context context) {
        context.SetState(
new ConcreteStateB());
    }
}
class ConcreteStateB 
extends State {
    @Override
    
public 
void Handle(Context context) {
        context.SetState(
new ConcreteStateA());
    }
}

Context : 维护一个 ConcreteState 子类的实例,这个实例定义当前的状态。

class Context {
    
private State state;
    
public Context(State state) {
        
this.state = state;
    }
    
    
public 
void SetState(State state) {
        
this.state = state;
        System.out.println("当前状态:" + state.getClass().getName());
    }
    
public State GetState() {
        
return state;
    }
    
    
public 
void Request() {
        state.Handle(
this);
    }
}

测试代码

public 
class StatePattern {
    
public 
static 
void main(String[] args) {
        Context c = 
new Context(
new ConcreteStateA());
        c.Request();
        c.Request();
    }
}

运行结果

当前状态:ConcreteStateB
当前状态:ConcreteStateA

推荐

本文属于

参考资料

《大话设计模式》

《HeadFirst设计模式》 

转载地址:http://hardx.baihongyu.com/

你可能感兴趣的文章
Linux 高可用集群解决方案
查看>>
17岁时少年决定把海洋洗干净,现在21岁的他做到了
查看>>
linux 启动oracle
查看>>
《写给大忙人看的java se 8》笔记
查看>>
倒计时:计算时间差
查看>>
Linux/windows P2V VMWare ESXi
查看>>
Windows XP倒计时到底意味着什么?
查看>>
tomcat一步步实现反向代理、负载均衡、内存复制
查看>>
运维工程师在干什么学些什么?【致菜鸟】
查看>>
Linux中iptables详解
查看>>
java中回调函数以及关于包装类的Demo
查看>>
maven异常:missing artifact jdk.tools:jar:1.6
查看>>
终端安全求生指南(五)-——日志管理
查看>>
Nginx 使用 openssl 的自签名证书
查看>>
创业维艰、守成不易
查看>>
PHP环境安装套件:快速安装LAMP环境
查看>>
CSS3
查看>>
ul下的li浮动,如何是ul有li的高度
查看>>
C++ primer plus
查看>>
python mysqlDB
查看>>