设计模式——状态模式

转自http://blog.csdn.net/u013062469/article/details/51940535

http://www.cnblogs.com/wangjq/archive/2012/07/16/2593485.html

介绍

状态模式和策略模式几乎完全一样,但是他们的目的和本质却是完全不一样的。状态模式的行为是平行的且不可替换的,策略模式的行为则是彼此独立的,而且是可以相互替换的。即:状态模式把对象的行为包装在不同的状态对象里面,每一个状态对象都有一个共同的抽象状态基类。状态模式的意图是让一个对象再其内部状态改变的时候,其行为也要发生改变。
定义

当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了基类,其实没有,他的基类是一个抽象基类。
使用场景

    一个对象的行为取决于他的状态,并且他必须在运行时根据状态改变他的行为,
    代码中包含了大量与对象有关的条件语句,例如:if...else...或者switch....case...,并且这些分支依赖与该对象的状态。

角色

    Context:环境类,定义用户感兴趣的接口,维护一个state子类的实例,这个实例定义了对象的当前状态。
    State:抽象状态类或者状态接口,定义或者一组接口,表示该状态的行为。
    ConcreteStateA,ConcreteStateB:具体状态类,每一个具体状态类实现抽象State中定义的接口,从而达到不同状态的不同行为。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值