状态模式的例子
来源:互联网 发布:linux虚拟机下载 编辑:程序博客网 时间:2024/05/13 03:11
1,状态模式允许一个"对象"在其内部状态改变的时候改变其行为。
2,状态模式的角色:
抽象状态,具体状态(一般是几个,每一个状态下有不同的行为,),环境(context)角色(就是对象,什么对象的状态,一般该对象要初始化一个状态,还有改变状态,还有该状态下的行为)
我们打篮球的时候运动员可以有正常状态,不正常状态,和超常状态,现在我们就以我们打篮球时候投篮时候的状态来举例子,
首先我们抽象出状态,以及该状态下的行为,
interface State{
public void shot();
}
然后实现具体状态,我们这里有三个,三种状态三种行为。
不正常
public class NonormalState implements State{
public void shot(){
System.out.println("今天你投篮十中一");
}
}
正常:
public class NormalState implements State{
public void shot(){
System.out.println("今天你投篮十中五");
}
}
超常:
public class SuperState implements State{
public void shot(){
System.out.println("今天你投篮十中十");
}
}
这个时候我们来一个环境,一个运动员,正常情况下是正常状态
public class Player{
private State state=new NormalState();
public void setState(State state){
this.state=state;
}
public void shot(){
state.shot();//这里我感觉是创建型模式的适配器模式,对象适配器。应该就是这样,
}
}
测试这个例子
public class StateTest
{
public static void main(String[] args){
Player player=new Player();
player.shot();//正常下投篮
player.setState(new NonormalState());
player.shot();不正常下投篮
player.setState(new SuperState());
player.shot();超常下投篮
}
}
抽象状态,具体状态(一般是几个,每一个状态下有不同的行为,),环境(context)角色(就是对象,什么对象的状态,一般该对象要初始化一个状态,还有改变状态,还有该状态下的行为)
我们打篮球的时候运动员可以有正常状态,不正常状态,和超常状态,现在我们就以我们打篮球时候投篮时候的状态来举例子,
首先我们抽象出状态,以及该状态下的行为,
interface State{
public void shot();
}
然后实现具体状态,我们这里有三个,三种状态三种行为。
不正常
public class NonormalState implements State{
public void shot(){
System.out.println("今天你投篮十中一");
}
}
正常:
public class NormalState implements State{
public void shot(){
System.out.println("今天你投篮十中五");
}
}
超常:
public class SuperState implements State{
public void shot(){
System.out.println("今天你投篮十中十");
}
}
这个时候我们来一个环境,一个运动员,正常情况下是正常状态
public class Player{
private State state=new NormalState();
public void setState(State state){
this.state=state;
}
public void shot(){
state.shot();//这里我感觉是创建型模式的适配器模式,对象适配器。应该就是这样,
}
}
测试这个例子
public class StateTest
{
public static void main(String[] args){
Player player=new Player();
player.shot();//正常下投篮
player.setState(new NonormalState());
player.shot();不正常下投篮
player.setState(new SuperState());
player.shot();超常下投篮
}
}
0 0
- 状态模式的例子
- 状态模式例子
- 状态模式(state)解析例子
- 状态模式(state)解析例子
- java基础总结 --- enum枚举的常量相关方法、自动售货机(状态模式)例子
- 状态模式的应用
- 进程的状态模式
- Android 的状态模式
- 设计模式的例子
- DAO模式的例子
- Singleton模式的例子
- 状态模式(事物的状态)
- 状态模式实现依赖于状态的行为
- 事务的状态(状态模式)
- 无状态会话Bean的例子
- 一个保存视图状态的小例子
- 检查网络状态的小例子
- 简单例子用于查看线程的状态
- android的Touch事件解析(dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent)
- 策略模式与命令模式的区别 是什么?
- 深入ThreadLocal
- 《关于粗糙集和邻域粗糙集的基本理论和程序算例(第二版本)》的声明
- libvirt/qemu特性之快照
- 状态模式的例子
- Netbeans 控制台显示中文
- Linux下makefile 模板
- Mysql存储引擎
- C语言scanf输入char类型时遇到回车问题:
- jQuery获取Select选择的Text和 Value
- MASM32开发COM组件【三】
- 领域驱动设计
- 概念与原理