状态模式

abstract class State{

        public abstract void Handle(Context context);

}

class ConcreteStateA extends State{

       public void Handle(Context context){

                 context.State=new ConcreteStateB();

       }

}

class ConcreteStateB extends State{

       public void Handle(Context context){

                context.State=new ConcreteStateA();

       }

}

class Context{

       private State state;

       public Context(State state){

                this.state=state;

       }

      public State getState(){}

      public void setState(){}

      public void Request(){

                state.Handle(this);

      }

}

状态模式的好处与用处:

状态模式的好处是将与特定状态相关的行为局部化,并且将不不同状态的行为分割开来。

是不是就是将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过第一个新的子类可以很容易第增加新的状态和转换。说白了,这样做的目的就是为了消除庞大的条件分支语句,大的分支判断会使得它们难以维护和修改,状态模式通过吧各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖。

当了一个对象的行为取决月他的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值