设计模式-状态模式(策略模式的孪生兄弟)以及JDK类库中的应用

状态模式是一种对象行为型模式,用于处理对象状态变化时的行为。当一个对象根据其状态执行不同行为时,该模式通过封装状态转换规则,将状态相关行为放入具体状态类。它在复杂条件判断时提供更好的结构。文章探讨了状态模式的定义、使用场景、结构和优缺点,并给出了具体案例。此外,还讨论了JDK类库如Iterator和LifeCycle中状态模式的应用。
摘要由CSDN通过智能技术生成

状态模式

定义

当一个对象的状态发生改变时,允许其改变行为。当一个对象存在多个状态,每种状态之间可以相互转换,并且每种状态对应不同的行为时可以使用状态模式。状态模式将一个对象的多种行为分离开来,并封装到具体的状态类中。它是一种对象行为型模式。

使用场景

状态模式主要适用于当控制一个对象状态转换的条件表达式过于复杂时,把状态判断的逻辑封装到具体状态类中。

结构

抽象状态类(State):定义一个不同状态下的行为方法,由具体的抽象类来实现不同的行为方法。

具体状态类(ConcreteState):实现抽象状态类的抽象方法,并根据环境类中状态类的状态执行不同的行为。

环境类(Context):拥有一个状态属性和抽象状态类,根据状态属性的不同实例化不同的具体状态类。环境类还包括一个唤醒方法用来执行具体状态类的行为。

类图

案例

以一天的工作状态为例,每个时间段有不同的工作状态。

抽象工作状态类

package com.headfirst.statemode.interfaces;

import com.headfirst.statemode.dao.Work;

public interface WorkState {

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值