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

建设网站怎么学网站换源码如何保留以前的文章

建设网站怎么学,网站换源码如何保留以前的文章,可口可乐营销策划方案,野花香社区在线观看播放概述 状态模式是一种行为设计模式,它可以让对象在内部状态改变时改变它的行为。简而言之,状态模式允许对象在不同状态下更改其行为,而不需要通过使用大量的条件语句进行手动更改。 优点: 状态模式将与特定状态相关的行为分散到…

概述

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

优点:
  • 状态模式将与特定状态相关的行为分散到不同的状态类中,使得代码更加模块化并且易于理解和维护。
  • 状态模式符合开放封闭原则(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.yayakq.cn/news/904034/

相关文章:

  • 德州金航网络公司网站建设做的网站加载太慢怎么办
  • 网站开发界面图标设计怎样创建自己的网站
  • 怎么创建网站充值和提现账号餐饮网站建设
  • 网站后台是怎么做出来的绍兴网络公司
  • 网站怎么创建论坛百度网站建设在哪
  • 沙井网站开发wordpress 蜘蛛爬行插件
  • 刷赞网站空间做摄影网站的公司
  • 深圳制作网站培训机构适合夫妻的suv
  • 网站注册账号有风险吗微信开发者平台怎么注销
  • 简单的网站建设模板济南工程建设验收公示网
  • 二维码网站建设源码photoshop怎么做网站
  • 网站建设 工作建议南阳市网站制作
  • wordpress 关键词设置济南网站优化推广
  • 网站备案到公司名称wordpress源码系统下载
  • 重庆网站建设服务公司深圳品牌衣服店名称
  • 精美网页源码网站抖音小程序怎么添加
  • 投票制作网站网页界面设计时颜色越多越好
  • 政务服务网站建设方案谷德设计网百度百科
  • 如何做Google外贸网站网站 内部搜索引擎
  • 太原做网站价格wordpress wp_register()
  • 如何做网站需求百度安全中心
  • 现在还有企业要建网站吗做网站程序员
  • 医疗网站前置审批北京网站建设公司完美湖南岚鸿首 选
  • 无锡网站建设报价网站的内容管理
  • 门户网站解决方案wordpress 功能 rss
  • 网站设计的建设目的seo口碑优化
  • 四川建设厅官方网站证件查询长沙推广优化公司
  • 网站建设蓝色工匠百度域名的ip
  • 无人一区二区区别是什么岳阳seo公司
  • 深圳建设网站需要多少钱h5响应式网站是什么意思