日拱一卒(三十三)

状态模式(State):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

        白话:当一个对象存在很多个状态,不同的状态产生不同的行为,这样会产生复杂的逻辑分支代码,如果要新增一种状态,则要改变产生这种行为的方法,违背了“开放-封闭”原则;此时可以用状态模式:将这个对象的状态抽象出一个基类State,对象的每个状态则是State这个类的子类,在这些子类中改变原对象的行为。这样逻辑判断被转移到了各个子类中。增加状态则是增加一个类,很好的扩展。

                            角色:(1)Context:原对象类

                                       (2)State:抽象状态

(3)ConcreateSateA等:具体状态


           说明:

(1)Context类为对象类,State则是影响对象的状态类。
                        (2)State中Hanlde方法用来改变Context中的State

                        (3)Context中的Request则是呈现状态更改后的行为。


   使用场景:
1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 
2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。


代码:





与策略模式的区别:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值