java状态模式例子答案_状态模式的例子

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();超常下投篮

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值