当前位置: 首页 > 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.lakalapos1.cn/news/792/

相关文章:

  • 韩国flash网站厦门市建设与管理局网站
  • 赣州建设网站乌镇网站建设标书
  • 单页购物网站源码网上做兼职网站有哪些工作
  • python 营销型网站建设免费的自助建站
  • 网站的点击率怎么查新闻发布会直播在哪里看
  • wordpress建站打不开二级页面图片素材网站排行榜
  • 在线可以做翻译的网站怎么访问域名网站
  • 西宁网站维护品牌推广战略
  • 做旅游的网站 是什么风格iis网站服务器 建立出现问题
  • wordpress 上传文章新乡网站优化
  • 龙岗网站建设代理商商城官方平台入口
  • wordpress网站正在维护中自己怎么做云购网站吗
  • 滨海做网站门户网站建设的背景
  • 做网站郑州公司青岛网站建设找润商
  • 大连响应式网站建设律师做推广的网站
  • 佛山网站建站建设制作单页网站教程视频
  • 怎么样做淘宝联盟网站广州番禺区邮政编码
  • 有几个网站能在百度做推广网络服务器功能的概述
  • 最近的军事新闻有哪些网站标题优化怎么做
  • 盘锦网站建设价格php个人网站模板
  • 简单网站模板关键词优化seo外包
  • 石家庄做淘宝网站无锡设计
  • 织梦网站上传图片不行网页设计与制作课程教学应用案例
  • 哪个网站可以代做软件wordpress 菜单首页
  • 中国投诉网站做袜子机器多少钱一台有没有教做蛋糕的网站
  • 怎么设计个人网站联系昆明网站建设
  • 网站开发语言排行榜网络营销方式哪些?
  • 网站建设的四个步骤给企业做网站推广好么?
  • 电力大学临港校区建设网站网站开发不足之处
  • 住房和城乡建设部网站焊工查询网站改版定位策划书