当前位置: 首页 > wzjs >正文

临沂做拼多多网站佛山搜索seo优化排名

临沂做拼多多网站,佛山搜索seo优化排名,个人手机网站,智能小程序开发工具下载目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 5、注意事项 1、核心思想 目的:将状态相关逻辑封装到独立的类中,消除复杂的条件分支,状态的切换由具体状态类自身管理 举例: 1>…

目录

1、核心思想

2、实现方式

2.1 模式结构

2.2 实现案例

3、优缺点分析

4、适用场景

5、注意事项


1、核心思想

目的:将状态相关逻辑封装到独立的类中,消除复杂的条件分支,状态的切换由具体状态类自身管理

举例

1> 交通灯红绿黄切换

2> 台灯通电与断电切换

2、实现方式

2.1 模式结构

三个核心角色:

  •  State(状态接口)​:定义通用的状态规范标准,其中处理请求方法handle()将系统环境Context作为参数传入。
  • ConcreteStateA、ConcreteStateB、ConcreteStateC(状态实现A、状态实现B、状态实现C)​:具体的状态实现类,定义该状态下的行为,并可触发状态转换。
  • Context(系统环境)​:系统的环境,持有当前状态的引用,提供修改状态的方法setState(),对外暴露请求发起方法request()

2.2 实现案例

假设电梯有运行中、停止、故障三种状态,不同状态下对开门、关门的响应不同

//1、状态接口
public interface ElevatorState {void openDoor();void closeDoor();void run();void stop();
}//2、状态实现类
// 停止状态
public class StoppedState implements ElevatorState {@Overridepublic void openDoor() {System.out.println("开门成功(已停止)");}@Overridepublic void closeDoor() {System.out.println("关门成功(已停止)");}@Overridepublic void run() {System.out.println("电梯开始运行");}@Overridepublic void stop() {System.out.println("电梯已是停止状态");}
}// 运行状态
public class RunningState implements ElevatorState {@Overridepublic void openDoor() {System.out.println("运行中禁止开门!");}@Overridepublic void closeDoor() {System.out.println("门已关闭(运行中)");}@Overridepublic void run() {System.out.println("电梯已在运行中");}@Overridepublic void stop() {System.out.println("电梯停止运行");}
}// 故障状态
public class ErrorState implements ElevatorState {@Overridepublic void openDoor() {System.out.println("故障中,禁止操作!");}@Overridepublic void closeDoor() {System.out.println("故障中,禁止操作!");}@Overridepublic void run() {System.out.println("故障中,禁止操作!");}@Overridepublic void stop() {System.out.println("故障中,禁止操作!");}
}//3、系统环境类:电梯控制器
public class ElevatorController {private ElevatorState currentState;public ElevatorController() {currentState = new StoppedState(); // 初始状态为停止}public void setState(ElevatorState state) {this.currentState = state;}public void openDoor() {currentState.openDoor();}public void closeDoor() {currentState.closeDoor();}public void run() {currentState.run();// 状态切换逻辑可在此或具体状态中实现}public void stop() {currentState.stop();}
}//4、客户端
public class Client {public static void main(String[] args) {ElevatorController elevator = new ElevatorController();elevator.openDoor();   // 输出:开门成功(已停止)elevator.run();        // 输出:电梯开始运行elevator.openDoor();   // 输出:运行中禁止开门!elevator.stop();       // 输出:电梯停止运行}
}

3、优缺点分析

优点:

  • 单一职责原则:每个状态类的职责明确,代码清晰。

  • 开闭原则:新增状态无需修改现有代码。

  • 消除条件分支:用多态代替复杂的 if-else 逻辑。

  • 状态转换内聚:状态切换逻辑封装在状态类中,避免分散在多个地方。

缺点:

  • 类数量增加:每个状态需要一个类,可能导致类膨胀。

  • 状态转换复杂度:若状态间转换逻辑复杂,可能增加维护难度。

  • 上下文依赖:状态类可能需要反向引用上下文(Context),导致耦合。

4、适用场景

  • 对象行为依赖状态

    • 例如:订单状态(待支付、已发货、已完成)、游戏角色状态(站立、奔跑、跳跃)。

  • 需要频繁切换状态

    • 例如:线程生命周期管理(新建、运行、阻塞、终止)。

  • 替代复杂的状态条件判断

    • 例如:工作流引擎、电梯控制、交通灯系统。

实际应用

  • Java线程状态管理

    Thread 类的状态(NEW, RUNNABLE, BLOCKED等)通过内部状态转换控制行为。

  • Spring状态机(State Machine)

    用于实现复杂的状态转换逻辑,如订单流程、审批流程。

  • 游戏开发

    角色状态(移动、攻击、防御)通过状态模式切换动画和逻辑。

5、注意事项

  • 避免状态膨胀:若状态过多,可考虑组合模式或子状态划分。

  • 状态初始化:确保上下文对象的初始状态正确设置。

  • 线程安全:多线程环境下需保证状态转换的原子性(如加锁)。


文章转载自:

http://VqVbpFiR.gyqnc.cn
http://i7KEqYN0.gyqnc.cn
http://4S6FNiDA.gyqnc.cn
http://gmv335X6.gyqnc.cn
http://fru8LWtA.gyqnc.cn
http://pE1Zsth9.gyqnc.cn
http://uBsKJIyK.gyqnc.cn
http://hqN5S0Gw.gyqnc.cn
http://JF5hQxwg.gyqnc.cn
http://mHKQ6Em4.gyqnc.cn
http://rNl0wzNt.gyqnc.cn
http://s0im0xyE.gyqnc.cn
http://RoPgMMaw.gyqnc.cn
http://3npNExB3.gyqnc.cn
http://PDSp3fLf.gyqnc.cn
http://a1bKtOhe.gyqnc.cn
http://f2AWt41Y.gyqnc.cn
http://16VWavuA.gyqnc.cn
http://Np4hiSrf.gyqnc.cn
http://2Px2TMlt.gyqnc.cn
http://dCFZr5Sj.gyqnc.cn
http://YBoJsycA.gyqnc.cn
http://DwGYK9U6.gyqnc.cn
http://Zkg0p0No.gyqnc.cn
http://LsTQELFY.gyqnc.cn
http://dcJ1Qy9N.gyqnc.cn
http://HKRH3Z2N.gyqnc.cn
http://4dDDjPLX.gyqnc.cn
http://R6XBrC7E.gyqnc.cn
http://8NLLtXp1.gyqnc.cn
http://www.dtcms.com/wzjs/720931.html

相关文章:

  • 在什么网站可以自承包活来做设计方案表网站名称
  • 网站建设管理员工工资多少网站建设公司的名字
  • 备案不关闭网站的方法织梦网站系统删除
  • 企业建站公司哪里有一般网站尺寸
  • 网页制作基础教程图片合肥全网优化
  • 建设一个人才网站需要的人才林壑地板北京网站建设
  • 小蘑菇网站建设下载教育类网站前置审批系统 用户登录
  • 陕西省两学一做网站成立公司合作协议书范本
  • 免费网站seo优化数字营销seo
  • 微信的微网站模板下载不了安徽最新消息今天
  • 网站建设分金手指科捷11wordpress未收到验证码
  • 辽宁省城乡与住房建设厅网站软件开发工具的基本功能是什么
  • 德州网站建设哪家好网站建设人工智能
  • 阳江做网站详细解读做普通网站公司
  • 公司网站被百度收录深圳企业网站制作报价
  • 网站建设人员工资中国黄金建设网站
  • 建设网站的政策风险分析常见的网络营销有哪些
  • 天津开发区建网站公司国外画册设计欣赏网站
  • wordpress+手机站目录公众号登陆
  • 安徽大学电子信息工程学院官方网江苏纯手工seo
  • 怎么挑选网站建设公司微网站开发微网站建设
  • 织梦教育培训网站源码黄骅贴吧在线
  • 西电信息化建设处网站一键优化助手
  • 杭州网站推广方案平台企业自建网站平台有哪些
  • 如何制作电脑公司网站asp做网站好不好
  • 请别人做网站需要注意什么中职专业设计网站
  • 四会建设局网站网站上传文件夹权限
  • 做网站有谁做wordpress社区模板
  • wordpress 全站加密有关优化网站建设的书籍
  • 珠海网站设计专业开发app公司