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

深圳网站设计我选刻微软网站做u盘启动教程

深圳网站设计我选刻,微软网站做u盘启动教程,贵阳哪家网站建设公司好,企查查官网查询入口系列文章|源码 https://github.com/tyronczt/design-mode-learn 文章目录 系列文章|源码一、模式核心思想二、模式结构三、Java代码示例:订单状态管理1. 定义状态接口2. 实现具体状态类3. 上下文类(Context)4. 客户端调用5. 运行截图 四、状…

系列文章|源码

https://github.com/tyronczt/design-mode-learn

文章目录

    • 系列文章|源码
    • 一、模式核心思想
    • 二、模式结构
    • 三、Java代码示例:订单状态管理
      • 1. 定义状态接口
      • 2. 实现具体状态类
      • 3. 上下文类(Context)
      • 4. 客户端调用
      • 5. 运行截图
    • 四、状态模式的核心优势
      • 1. 消除复杂条件分支
      • 2. 高扩展性与维护性
      • 3. 符合开闭原则(OCP)
      • 4. 状态转换显式化
      • 5. 提升代码复用性
    • 五、适用场景
    • 六、与其他模式的协作
    • 七、总结
    • 参考

一、模式核心思想

状态模式(State Pattern)是一种行为型设计模式,允许对象在其内部状态改变时改变自身行为。其核心思想是将对象的状态抽象为独立类,通过委托状态对象处理与状态相关的逻辑,从而消除复杂的条件判断语句(如if-elseswitch-case),提升代码的可维护性和扩展性。

二、模式结构

状态模式包含三个核心角色:

角色职责Java实现示例
Context(上下文)维护当前状态对象的引用,并将状态相关操作委托给具体状态类持有State接口实例,提供状态切换方法(如setState()
State(状态接口)定义状态行为的抽象方法,约束具体状态类的实现接口或抽象类(如OrderState接口定义handleState()方法)
ConcreteState(具体状态)实现特定状态下的行为逻辑,并触发状态转换实现State接口的类(如PayOrder处理支付状态逻辑)

三、Java代码示例:订单状态管理

以下是一个简化的订单状态流转示例,展示状态模式的实际应用:

1. 定义状态接口

public interface IOrderState {/*** 处理订单上下文*/void handle(OrderContext context);
}

2. 实现具体状态类

// 待支付状态
public class PendingPaymentState implements IOrderState {// 实现接口中的handle方法@Overridepublic void handle(OrderContext context) {System.out.println("订单待支付,跳转支付页面...");context.setState(new PaidState()); // 状态切换}
}// 已支付状态
public class PaidState implements IOrderState {@Overridepublic void handle(OrderContext context) {System.out.println("订单已支付,准备发货...");context.setState(new ShippedState());}
}// 已发货状态
public class ShippedState implements IOrderState {@Overridepublic void handle(OrderContext context) {System.out.println("订单已发货,待收货...");}
}

3. 上下文类(Context)

public class OrderContext {private IOrderState state;public void setState(IOrderState state) {this.state = state;}public void process() {state.handle(this);}
}

4. 客户端调用

public class Client {public static void main(String[] args) {// 创建一个订单上下文实例OrderContext order = new OrderContext();// 设置订单的初始状态为待支付order.setState(new PendingPaymentState());order.process(); // 输出:订单待支付,跳转支付页面...order.process(); // 输出:订单已支付,准备发货...order.process(); // 输出:订单已发货,待收货...}
}

5. 运行截图

四、状态模式的核心优势

1. 消除复杂条件分支

问题:传统方式需通过大量if-else判断当前状态(如订单状态),代码臃肿且难以维护。
解决:每个状态封装独立类,逻辑清晰(如PendingState仅处理待支付逻辑)。

2. 高扩展性与维护性

新增状态:只需添加新状态类(如新增CanceledState),无需修改现有代码。
修改行为:仅需调整对应状态类的逻辑,避免牵一发而动全身。

3. 符合开闭原则(OCP)

• 对扩展开放:新状态不影响原有系统。
• 对修改关闭:上下文类无需因状态增减而改动。

4. 状态转换显式化

• 状态流转由具体状态类控制(如PaidState触发向ShippedState的转换),逻辑集中且透明。

5. 提升代码复用性

• 公共逻辑可抽取至抽象类(如状态切换的公共方法),减少重复代码。

五、适用场景

  1. 多状态对象:如订单状态(待支付/已发货)、任务状态(进行中/已完成)。
  2. 行为依赖状态:如游戏角色状态(攻击/防御)触发不同动作。
  3. 需动态切换逻辑:如电梯运行状态(上行/停止)对应不同控制规则。

六、与其他模式的协作

策略模式:状态模式强调状态驱动行为,策略模式侧重算法选择(如加密算法切换)。
观察者模式:结合使用可实现状态变更实时通知(如订单状态更新触发邮件通知)。

七、总结

状态模式通过解耦状态与行为,解决了复杂状态逻辑的维护难题。其优势在Java中尤为突出,结合接口和多态特性,能高效实现灵活的状态管理。实际开发中,建议在状态较多或流转复杂的场景(如电商、游戏)优先采用此模式。

项目代码:https://github.com/tyronczt/design-mode-learn/tree/main/design-mode-learn-31

参考

7.状态设计模式 - 掘金

状态设计模式


文章转载自:

http://KODUNqr1.hnrLs.cn
http://8oteACYh.hnrLs.cn
http://wn2mc7iI.hnrLs.cn
http://yn1fjnAH.hnrLs.cn
http://xQ5HyNlA.hnrLs.cn
http://t3RBvhUJ.hnrLs.cn
http://1lamoZqk.hnrLs.cn
http://1nOZVLbP.hnrLs.cn
http://uiFmuB4U.hnrLs.cn
http://1GEJVaTq.hnrLs.cn
http://m2P07Q50.hnrLs.cn
http://B3LVkFKT.hnrLs.cn
http://hkSQF3ml.hnrLs.cn
http://DE0Bbxxg.hnrLs.cn
http://fnHlO1fI.hnrLs.cn
http://5zgQLXHt.hnrLs.cn
http://tt5jh1YM.hnrLs.cn
http://zBm8zOfI.hnrLs.cn
http://vUl6ygBD.hnrLs.cn
http://4kVQaz9f.hnrLs.cn
http://2fFS05KS.hnrLs.cn
http://RdisAix6.hnrLs.cn
http://aclHKxe8.hnrLs.cn
http://Sy2jXKOT.hnrLs.cn
http://iCFEbWFe.hnrLs.cn
http://Ihso8aHP.hnrLs.cn
http://NITPY3u5.hnrLs.cn
http://fFkpaKJH.hnrLs.cn
http://xBuJmYdP.hnrLs.cn
http://PmeuKG0C.hnrLs.cn
http://www.dtcms.com/wzjs/698886.html

相关文章:

  • 做风帆网站需要多少钱网页设计与网站建设试题
  • seo技术 如何优化网站内部结构上海松江品划做网站
  • 政务门户网站建设思想广州比较好的网站建设公司
  • 青岛vps网站西安做网站公司工资
  • 手机网站建设做魔杖网站
  • 做网店好还是网站网页制作软件是哪个
  • pc网站制作APP易企秀可以做网站吗
  • 湖南企业做网站电子商务网站建设与网页设计
  • 做图有什么网站什么软件制作网站快
  • 怎么申请建立一个公司网站万能网页编辑器
  • 做公众号的网站模板下载网络营销方案成功案例
  • 网站建设 资质要求网站建设方案书范文
  • 淘宝网站建设需要哪些技术如何买域名
  • 现如今网站开发用什么框架单页营销网站后台
  • 怎么做非法彩票网站天津住房城乡建设厅官方网站
  • 网站友情链接形式滁州做网站电话号码
  • 怀化物流网站建设报价wordpress教程 gofair
  • 个人网站发布怎么做如何推广小程序
  • 合肥seo整站优化网站电商平台哪个最好
  • 深圳自己做网站代码优化网站排名
  • 怎么做网站网站代理挑号网站后台怎么更新
  • 黄石网站推广排名服务我是一条龙
  • 法人变更在哪个网站做公示哪里长沙网站开发
  • 企业网站建设存在的问题及建议wordpress如何直接设置下载
  • 专业做网站建设公司好吗做搜索引擎优化对网站有哪些好处
  • 廊坊网站专业制作会员网站建设
  • 公司网站建设注意事项福建建设工程注册中心网站
  • 济南建站公司注意事项wordpress 角色权限
  • 深圳制作网站制作冲电气软件 网站建设
  • 川畅联系 做网站多少钱淘宝详情页设计