Behavior.State状态模式:不同状态平行不可替换,有规律地相互切换

状态模式允许对象在内部状态改变时改变其行为,看起来就像修改了类一样。它将状态和行为封装在独立的类中,通过维护状态的变化来调用不同行为。状态模式中的行为具有平行性,不可互相替换,而策略模式的行为是平等的,可替换。在状态模式中,上下文不处理状态相关行为,而是委托给状态处理类。虽然状态模式可能在添加新实现类时违反OCP原则,但在实际开发中,它提供了灵活应对状态变化的方法。在处理状态对象时,可以按需创建和销毁,或者采用缓存策略。
摘要由CSDN通过智能技术生成
状态模式(State Pattern)的定义

(1)定义:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

  ①状态和行为,它们的关系可以描述为状态决定行为

  ②因状态是在运行期被改变,行为也会在运行期根据状态的改变而改变。看起来,同一个对象,在不同的运行时刻,行为是不一样的,就像是类被修改了一样

(2)状态模式的结构和说明

 

  ①Context:环境,也称上下文,通常用来定义客户感兴趣的接口,同时维护一个来具体处理当前状态的实例对象

  ②State:状态接口,用来封装与上下文的一个特定状态所对应的行为。

  ③ConcreteState:具体实现状态处理的类,每个类实现一个跟上下文相关的状态的具体处理。

思考状态模式

(1)状态模式的本质:根据状态来分离和选择行为

(2)状态和行为

  ①状态模式的功能就是把状态和状态对应的行为分离出来,每个状态所对应的功能处理封装在一个独立的类里。通过维护状态的变化,来调用不同状态对应的不同功能。

  ②为了操作不同的状态类,定义一个状态接口来约束它们,这样外部就可以面向这个统一的状态接口编程,而无须关心具体的状态类实现了。

  ③状态和行为是相关联的,它们的关系可以描述为状态决定行为。因状态是在运行期被改变,行为也会在运行期根据状态的改变而改变,看起来,同一个对象,在不同的运行时刻,行为是不一样的,就像是类被修改了一样。

(3)行为的平行性

  ①注意是平行性,而不是平等性。所谓的平行性指的是各个状态的行为所处的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值