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

做dj选歌是哪个网站新乡网站优化公司价格

做dj选歌是哪个网站,新乡网站优化公司价格,做网站UI工具,微信小程序点餐系统源码概述 状态模式是一种行为设计模式,它可以让对象在内部状态改变时改变它的行为。简而言之,状态模式允许对象在不同状态下更改其行为,而不需要通过使用大量的条件语句进行手动更改。 优点: 状态模式将与特定状态相关的行为分散到…

概述

状态模式是一种行为设计模式,它可以让对象在内部状态改变时改变它的行为。简而言之,状态模式允许对象在不同状态下更改其行为,而不需要通过使用大量的条件语句进行手动更改。

优点:
  • 状态模式将与特定状态相关的行为分散到不同的状态类中,使得代码更加模块化并且易于理解和维护。
  • 状态模式符合开放封闭原则(Open-Closed Principle),当需要新增一种状态时,可以通过添加一个新的状态类来扩展系统,而不需要修改已有的代码。
  • 状态模式将状态转换逻辑封装在状态类中,使得可以在不同的状态类中实现不同的状态转换规则,从而实现更灵活的状态转换逻辑。
缺点:
  • 状态类的数量可能会随着状态的增加而增加,导致系统中类的数量增加,增加了代码的复杂性和理解难度。
  • 状态模式要求对象具有较为复杂的内部状态转换逻辑,如果只有少量的状态转换,使用状态模式可能会显得过于繁琐。
使用场景:
  • 当一个对象的行为与其状态相关,并且在不同状态下行为发生变化时,可以考虑使用状态模式。例如,订单在不同状态下有不同的行为,可以使用状态模式来封装每个状态的行为。
  • 当需要提供对象的历史记录和撤销功能时,状态模式可以很好地实现。例如,文本编辑器中的编辑历史记录、Web浏览器中的前进和后退功能等。

示例

假设我们正在开发一个电子商务平台,需要实现订单状态的管理。订单的状态可以有多种,例如待支付、已支付、已发货、已完成等。不同的状态下,订单的行为也不同。

首先,我们定义订单状态接口OrderState,并在接口中定义订单的行为:

public interface OrderState {void pay(Order order);void deliver(Order order);void complete(Order order);
}

然后,我们实现具体的订单状态类,例如待支付状态PendingPaymentState、已支付状态PaidState、已发货状态ShippedState和已完成状态CompletedState

public class PendingPaymentState implements OrderState {@Overridepublic void pay(Order order) {System.out.println("订单已支付");order.setState(new PaidState());}@Overridepublic void deliver(Order order) {System.out.println("订单未支付,不能发货");}@Overridepublic void complete(Order order) {System.out.println("订单未支付,不能完成");}
}public class PaidState implements OrderState {@Overridepublic void pay(Order order) {System.out.println("订单已支付");}@Overridepublic void deliver(Order order) {System.out.println("订单已发货");order.setState(new ShippedState());}@Overridepublic void complete(Order order) {System.out.println("订单未发货,不能完成");}
}public class ShippedState implements OrderState {@Overridepublic void pay(Order order) {System.out.println("订单已支付");}@Overridepublic void deliver(Order order) {System.out.println("订单已发货");}@Overridepublic void complete(Order order) {System.out.println("订单已完成");order.setState(new CompletedState());}
}public class CompletedState implements OrderState {@Overridepublic void pay(Order order) {System.out.println("订单已支付,不能重新支付");}@Overridepublic void deliver(Order order) {System.out.println("订单已完成,不能发货");}@Overridepublic void complete(Order order) {System.out.println("订单已完成");}
}

接下来,我们定义订单类Order,并在类中保存订单的状态和执行订单相关的行为:

public class Order {private OrderState state;public Order() {this.state = new PendingPaymentState();}public void setState(OrderState state) {this.state = state;}public void pay() {state.pay(this);}public void deliver() {state.deliver(this);}public void complete() {state.complete(this);}
}

现在,我们可以创建订单对象,并根据不同的状态执行订单的行为:

public class StateExample {public static void main(String[] args) {// 创建订单对象Order order = new Order();// 执行订单的行为order.pay();order.deliver();order.complete();}
}

运行结果

订单已支付
订单未支付,不能发货
订单未支付,不能完成

http://www.hkea.cn/news/581592/

相关文章:

  • 网站备案要到哪里下载关键词在线挖掘网站
  • 跨境电商开发seo的优化策略有哪些
  • 做网站的费用 优帮云百度广告代运营
  • wordpress儿童卡通主题兰州网站seo服务
  • 8网站建设做网站sem优化师是什么意思
  • 设计师个人网站怎么做百度优化培训
  • 广东海外建设监理有限公司官方网站2345网址导航是病毒吗
  • 深圳网站制作培训宁波网络营销公司
  • 网站建设方案书 模板长清区seo网络优化软件
  • 简述网站的推广策略产品设计
  • 商贸有限公司网站建设此网站服务器不在国内维护
  • 常州个人做网站制作小程序的软件
  • 郑州做网站公司dz论坛如何seo
  • 十堰商城网站建设网络营销seo优化
  • 小欢喜林磊儿什么网站做家教福州seo推广外包
  • 许昌网站开发博客营销
  • 做网站用jquery爱站网关键词挖掘
  • wordpress手动裁剪seo营销推广服务公司
  • 英文网站建设网站海南网站制作公司
  • 网页设计与网站建设主要内容软文营销的特点
  • 一起做网站17广州最新小组排名
  • 最专业的网站设计公司有哪些论坛企业推广
  • 单页网站怎么做外链个人网页
  • 宁波城乡住房建设局网站有效的网络推广
  • 网站建设 深圳销售crm客户管理系统
  • 高端网站开发设计站长之家字体
  • 免费网站建站工具购买域名的网站
  • 淘宝联盟怎么做网站百度网站提交
  • 前端做用vue做后台多还是做网站多青岛网站快速排名优化
  • 岳阳网站开发公司海淀区seo多少钱