状态模式

    策略模式和状态模式是双胞胎,策略模式是围绕可以互换的算法来创建成功业务的。而状态模式通过改变对象内部的状态来帮助对象控制自己的行为。

 

实现状态机:
    1.找出所有状态。
    2.创建一个实例变量保持所有目前的状态。
例如final static int SOLD_OUT = 0;final static int CAN_SOLD = 0;
用状态对象的概念:State sold_out;State can_sold;
    3.将系统中可能发生的动作整合起来。
    4.创建一个状态接口,将动作封装。
    5.所有状态都继承这个接口。

 

    我们应该试着局部化每个状态的行为,这样一来,如果我们针对某个状态坐了改变,就不会把其他的代码给搞乱,换句话说,遵守"封装变化"原则。将状态对象封装在各自的类中,然后在动作发生时委托给当前状态。

 

定义状态模式:
    状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了他的类。
    这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象。

 

策略模式和状态模式:
    这两者的类图是几乎一样的,但是区别在于意图。
    状态模式:将一群行为封装在状态对象中,context的行为随时委托到那些状态对象中的一个。随着时间的流逝,当前状态在状态对象集合中游走改变,以反映context内部的状态,因此,context的行为也会跟着改变,但是context的客户对于状态了解不多,甚至根本是浑然不觉。
    策略模式:客户通常主动制定contgext所要组合的策略对象是哪一个。对于某个context对象来说,通常只有一个最适合的策略对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值