android 源码设计模式之--状态模式
1模式定义:
类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。
2应用场景
1. 行为随状态改变而改变的场景。 2、条件、分支语句的代替者。
何时使用:代码中包含大量与对象状态有关的条件语句。
如何解决:将各种具体的状态类抽象出来。
3组成部分
1 State 接口。2 各个实现了 State 接口的实体状态类。3 一个带有某个状态的状态封类。4 我们的客户类(测试类)
4 示例场景说明
5 示例代码
//状态接口
public interface XiaoMingtState { public void currentState(); }
//具体状态类 吃饭
public class ChiFanState implements XiaoMingtState { @Override public void currentState() { // TODO Auto-generated method stub System.out.println("吃饭"); } }
//具体状态类 发呆
public class FaDaiState implements XiaoMingtState { @Override public void currentState() { // TODO Auto-generated method stub System.out.println("发呆"); } }
//具体状态类 玩游戏
public class PlayGameState implements XiaoMingtState { @Override public void currentState() { // TODO Auto-generated method stub System.out.println("玩游戏"); } }
//具体状态类 睡觉
public class ShuijiaoState implements XiaoMingtState{ @Override public void currentState() { // TODO Auto-generated method stub System.out.println("睡觉"); } }
状态封装类
public class StateContext { public XiaoMingtState mXMstate; public StateContext() { // TODO Auto-generated constructor stub } //设置当前状态 public void setXiaoMingtState(XiaoMingtState state){ mXMstate = state; } //获取当前状态 public XiaoMingtState getXiaoMingtState(){ return mXMstate; } public void pritState(){ mXMstate.currentState(); } }
客户类
public class ZhuangtaiMain { public static void main(String[] args) { ShuijiaoState mshuijiao = new ShuijiaoState(); StateContext statcontext = new StateContext(); statcontext.setXiaoMingtState(mshuijiao); statcontext.getXiaoMingtState().currentState(); ChiFanState mchifan = new ChiFanState(); statcontext.setXiaoMingtState(mchifan); statcontext.getXiaoMingtState().currentState(); } }
/----结果打印--------------------------------------
睡觉
吃饭
参考文献:
https://www.cnblogs.com/ZhangHaoShuaiGe/p/8000451.html
https://www.cnblogs.com/anni-qianqian/p/5602110.html
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论