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

旅游网站做模板素材热门seo推广排名稳定

旅游网站做模板素材,热门seo推广排名稳定,阿里云服务器建站,2021年中国关键词概念和作用 状态模式允许一个对象在其内部状态改变时改变它的行为,使得对象看起来像是修改了它的类。核心思想是将状态相关的行为封装到独立的状态类中,并通过委托方式动态切换状态逻辑。其作用是: 1.消除大量条件分支(如 if-el…

概念和作用

状态模式允许一个对象在其内部状态改变时改变它的行为,使得对象看起来像是修改了它的类。核心思想是将状态相关的行为封装到独立的状态类中,并通过委托方式动态切换状态逻辑。其作用是:

1.消除大量条件分支(如 if-else)。

2.将状态转换逻辑局部化到具体状态类中。

3.提高代码可维护性和扩展性(符合开闭原则)。

使用场景

1.对象行为依赖多个状态,且状态转换频繁。

2.需要消除大量状态判断分支(如电商订单、游戏角色状态)。

3.需要清晰分离不同状态的业务逻辑。

示例

订单状态场景分析——假设订单有以下状态和规则:

1.新建状态 (New):可完成订单、可取消订单。

2.已完成状态 (Completed):不可重复完成、不可取消。

3.已取消状态 (Cancelled):不可完成、不可重复取消。

实现代码(状态模式版)

1.定义状态接口

interface OrderState {void complete(Order order);void cancel(Order order);
}

2.实现具体状态类:新建、已完成、已取消

// 新建状态
class NewState implements OrderState {@Overridepublic void complete(Order order) {System.out.println("订单完成!");order.setState(new CompletedState());}@Overridepublic void cancel(Order order) {System.out.println("订单已取消!");order.setState(new CancelledState());}
}
// 已完成状态
class CompletedState implements OrderState {@Overridepublic void complete(Order order) {System.out.println("已完成订单不可重复完成!");}@Overridepublic void cancel(Order order) {System.out.println("已完成订单不可取消!");}
}
// 已取消状态
class CancelledState implements OrderState {@Overridepublic void complete(Order order) {System.out.println("已取消订单不可完成!");}@Overridepublic void cancel(Order order) {System.out.println("已取消订单不可重复取消!");}
}

3.订单类

class Order {private OrderState state;public Order() {this.state = new NewState(); // 初始状态}public void setState(OrderState state) {this.state = state;}// 委托给当前状态处理public void complete() {state.complete(this);}public void cancel() {state.cancel(this);}
}

4.测试类

public class StatePatternDemo {public static void main(String[] args) {Order order = new Order();order.complete(); // 输出:订单完成!order.cancel();   // 输出:已完成订单不可取消!order = new Order();order.cancel();   // 输出:订单已取消!order.complete(); // 输出:已取消订单不可完成!}
}

优缺点

优点

缺点

消除复杂的条件判断

增加类的数量

状态转换逻辑集中管理

小规模场景可能过度设计

符合开闭原则(新增状态无需修改现有代码)

状态间依赖可能增加复杂度

不使用状态模式的实现

class Order {private String state; // "NEW", "COMPLETED", "CANCELLED"public void complete() {if ("NEW".equals(state)) {System.out.println("订单完成!");state = "COMPLETED";} else if ("COMPLETED".equals(state)) {System.out.println("已完成订单不可重复完成!");} else if ("CANCELLED".equals(state)) {System.out.println("已取消订单不可完成!");}}public void cancel() {if ("NEW".equals(state)) {System.out.println("订单已取消!");state = "CANCELLED";} else if ("COMPLETED".equals(state)) {System.out.println("已完成订单不可取消!");} else if ("CANCELLED".equals(state)) {System.out.println("已取消订单不可重复取消!");}}
}

问题

1.违反开闭原则:新增状态需修改所有方法。

2.条件分支膨胀,难以维护。

3.状态逻辑分散,无法复用。

http://www.dtcms.com/wzjs/784608.html

相关文章:

  • 给男票做网站表白的软件设计之家房屋装修游戏破解版
  • 四川遂宁做网站的公司wordpress删除仪表盘
  • 黑龙江新闻法治在线回放优化公司
  • 蓬莱做网站那家好湖北专业网站建设检修
  • 济南网站建设 找小七淘宝联盟上怎么建设网站
  • 昆山建设局图审中心网站订阅 wordpress
  • 中国宁波网站广州注册公司代理记账
  • 网站做软件有哪些百度免费下载安装百度
  • 网站浏览量提升深圳做网站服务公司
  • 江苏省建设厅网站建筑电工证宁波seo
  • html editor中文版深圳网站推广优化培训
  • 上海房产交易网站安装wordpress 空白
  • 做301到别人网站一级建造师报考条件
  • vue做门户网站用什么ui主做销售招聘的招聘网站有哪些
  • 网站流量变现北京市在建工程项目查询
  • 网站建设一条龙ue365宁波公司网站建设
  • 那种退不掉的网站怎么做的好学校平台网站模板
  • 怎么把WordPress和域名解绑汕头seo快速排名
  • 公司网站制作范文营销网络怎么写
  • 巴中网站建设有限公司大型网络手游游戏排行榜
  • 甘肃微信网站建设多个链接的网站怎么做的
  • 电子商城网站开发 pdf网站空间500m是什么
  • 支付宝也做网站吗建立什么本地网站赚钱
  • 云主机建站网站开发入门书
  • 长沙模板建站欢迎咨询网站制作哪种好
  • 网站关键词排名优化软件网页编辑软件手机版
  • 全球外贸网站有哪些南京医院手机网站建设
  • 网站建设 超薄网络昆山设计网站的公司
  • led灯具网站模板重庆市工程建设标准化信息网
  • 河北邯郸做网站的公司logo在线设计图片