设计模式——状态模式

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

【1】具体做法
	将某个事物的各种状态都定义成一个类,每个类都拥有具体事物的行为,这些不同状态内部的方法对应着该状态下应有的行为。
  • 剖析状态模式
实际上的做法是,由于某个事物的行为会随着自己状态的改变而改变,为了扩展,做法不再是根据状态的不同,让事物本身去改变行为。
这个时候,将状态都定义成一个类,同时具有着该事物的每个行为。就像是这个事物在每个状态下都有了自己的一个分身。
当外界需要某个状态下对应的行为,不是事物本身变来变去应对,而是委托给这些分身。
我们可以随时增加一个分身来处理新状态,这使得在面对应接不暇的需求时,也可以从容应对。
因为实际上干活的不是我一个!只不过是外界的人看起来是我一个人完成了所有的事。
(他们不能分辨我和分身的真假,嘿嘿)
  • 状态模式和策略模式
状态模式和策略模式的类图一摸一样,但是这两种模式的意图存在差别。
【1】对于客户而言,
	状态模式:
		主体对象在不同状态下,使用不同的状态对象来完成行为,使用主体对象的客户对这些状态对象却浑然不知。
	策略模式:
		使用的客户通常需要明确指定用哪个组合的对象来实现行为。
【2】针对的场景
	状态模式:
		替代在一个类中放置许多判断条件的方案。
	策略模式:
		除了继承之外一种弹性设计的替代方案。
  • 代码示例
design-mode-demo/src/pattern/state
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值