设计模式(6)状态模式--行为型

来源:互联网 发布:如何看淘宝价格走势 编辑:程序博客网 时间:2024/05/17 08:49

定义

允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

角色

Context: 环境类。可以包括一些内部状态。
State: 抽象状态类。State定义了一个所有具体状态的共同接口,任何状态都实现这个相同的接口,这样一来,状态之间就可以互相转换了。
ConcreteState: 具体状态类。具体状态类,用于处理来自Context的请求,每一个ConcreteState都提供了它对自己请求的实现,所以,当Context改变状态时行为也会跟着改变

适用场景

1、对象的行为依赖于它的状态(属性)并且可以根据它的状态改变而改变它的相关行为。
2、代码中包含大量与对象状态有关的条件语句

类图

这里写图片描述

示例

糖果机的处理

引申

模板方法模式:有子类决定如何实现算法中的某些步骤
状态模式:封装基于状态的行为,并将行为委托到当前状态
策略模式:将可以互换的行为封装其来,然后使用委托的方法,决定使用哪一个行为

0 0
原创粉丝点击