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

网站加图标wordpress怎么换语言

网站加图标,wordpress怎么换语言,大连建立网页,查网站权重目录 1. 概念 2. 定义状态机 3. 生成一个状态机 4. 使用 1. 概念 在Java的应用开发里面#xff0c;应该会有不少的人接触到一个业务场景下#xff0c;一个数据的状态会发生多种变化#xff0c;最经典的例子例如订单#xff0c;当然还有像用户的状态变化#xff08;冻结…目录 1. 概念 2. 定义状态机 3. 生成一个状态机 4. 使用 1. 概念 在Java的应用开发里面应该会有不少的人接触到一个业务场景下一个数据的状态会发生多种变化最经典的例子例如订单当然还有像用户的状态变化冻结销户等文章的状态变化已发布草稿等。像这些具有多种状态的事物如果我们不进行一些措施来进行维护和扩展的话那么将会导致状态越难越难以管理而且对状态的转变也会越来越难以定义。 那么讲出了它现在存在的问题也就能大概知道本文要讲的是主要内容是什么了。没错状态机就是用来规范使用状态的各种变化的一种产物。 可能大家还不清楚这个玩意为什么产生我给大家一个场景如果没有一种严格的状态机控制那么像订单这种我们是不是可以直接从已下单的状态直接推进到已发货的状态而越过中间的支付等等的中间状态。这显然是有问题的。 在状态机当中具有四个概念用来控制状态的变化。一种状态需要迁移到下一种状态一定是经过某种行为或者事件转化到下一个状态。所以这也就成为了状态机的核心概念。​​​​​​ 状态States代表系统可能处于的各种状态例如 已下单、已支付、已发货 等。 事件Events触发状态转换的事件例如 下单、支付、发货 等。 动作Actions在状态转换发生时执行的操作或行为。 转换Transitions定义状态之间的转换规则即在某个事件发生时系统从一个状态转换到另一个状态的规则 2. 定义状态机 我们可以定义一个状态机并声明两个变量一个用来记录状态变化的记录一个用来记录要经过下一个状态需要的源状态与事件。在生成一个状态机的过程我们将记录他需要变化的所有的状态事件以及转换。 public class StateMachine {private MapString,String translatedTransitionsMap new HashMap();private SetString translatedTransitions new HashSet();private static final String DEFAULT_DELIMITER -;public StateMachine(Transition[] transitions){for (Transition transition : transitions) {translatedTransitions.add(transition.getFrom() DEFAULT_DELIMITER transition.getEvent() DEFAULT_DELIMITER transition.getTo());if(translatedTransitionsMap.containsKey(transition.getFrom() DEFAULT_DELIMITER transition.getEvent())){throw new RuntimeException(Duplicate transition found: transition.getFrom() DEFAULT_DELIMITER transition.getAction());}translatedTransitionsMap.put(transition.getFrom() DEFAULT_DELIMITER transition.getEvent(),transition.getTo());}}public String getNextState(String from, String event){return translatedTransitionsMap.get(from DEFAULT_DELIMITER event);}public boolean checkTransitions(String from, String even){return translatedTransitions.contains(from DEFAULT_DELIMITER event);}}过渡类的内容为 Data AllArgsConstructor NoArgsConstructor public class Transition {/*** 起始状态*/private String from;/*** 动作*/private String even;/*** 目标状态*/private String to;}3. 生成一个状态机 我们此次以订单举例生成一个订单的状态机 public class OrderStatusModel {private static StateMachine ORDEER_STATEMACHINE;static {ORDEER_STATEMACHINE new StateMachine(new Transition[]{new Transition(TradeStatusEnum.NEW.getStatus(), TradeEventEnum.CONFIRM.name(), TradeStatusEnum.WAIT_PAY.getStatus()),new Transition(TradeStatusEnum.NEW.getStatus(), TradeEventEnum.CANCEL.name(), TradeStatusEnum.CLOSED.getStatus()),new Transition(TradeStatusEnum.WAIT_PAY.getStatus(), TradeEventEnum.PAY.name(), TradeStatusEnum.PAY_SUCCESS.getStatus()),new Transition(TradeStatusEnum.WAIT_PAY.getStatus(), TradeEventEnum.PAY_CANCEL.name(), TradeStatusEnum.CANCELLED.getStatus()),new Transition(TradeStatusEnum.PAY_SUCCESS.getStatus(), TradeEventEnum.CONFIRM_SUCCESS.name(), TradeStatusEnum.COMPLETED.getStatus())});}public static String getTargetStatus(TradeStatusEnum currentStatus, TradeEventEnum tradeEventEnum) {return ORDEER_STATEMACHINE.getNextState(currentStatus.getStatus(), tradeEventEnum.name());}}订单状态枚举 Getter public enum TradeStatusEnum {/*** 新建订单*/NEW(NEW, 新建订单),/*** 锁单成功-待支付状态*/WAIT_PAY(WAIT_PAY, 待支付),/*** 支付成功*/PAY_SUCCESS(PAY_SUCCESS, 支付成功),/*** 已完成*/COMPLETED(COMPLETED,已完成),/*** 已取消*/CANCELLED(CANCELLED,已取消),/*** 订单关闭*/CLOSED(CLOSED,订单关闭);private String status;private String desc;TradeStatusEnum(String status, String desc) {this.status status;this.desc desc;} } 订单事件 public enum TradeEventEnum {/*** 订单确认*/CONFIRM,/*** 取消订单*/CANCEL,/*** 支付*/PAY,/*** 支付取消*/PAY_CANCEL,/*** 订单确认成功*/CONFIRM_SUCCESS,/*** 订单完成*/FINISH } 4. 使用 Data public class TradeOrder {private String orderId;private String status;private double price;public TradeOrder confirm(TradeCreateRequest request) {this.setStatus(OrderStatusModel.getTargetStatus(request.getTradeStatus(), TradeEventEnum.CONFIRM));return this;}public TradeOrder pay(TradeWaitPayRequest request) {this.setStatus(OrderStatusModel.getTargetStatus(request.getTradeStatus(), TradeEventEnum.CANCEL));return this;} }传参为 public class TradeCreateRequest extends BaseResquest{Overridepublic TradeStatusEnum getTradeStatus(){return TradeStatusEnum.NEW;} }public abstract class BaseResquest {abstract TradeStatusEnum getTradeStatus(); }
http://www.hkea.cn/news/14338011/

相关文章:

  • 网站开发需呀那些技术下列哪个软件属于网页制作软件
  • 淄博免费建站zencart网站打不开
  • 目前热门的网站建设语言株洲新区发布
  • 网站服务器租用怎么购买长沙seo公司
  • 厦门做企业网站找谁免费空间服务的网站
  • 深圳住房和建设局网站公开招标建站不备案
  • 厦门营销网站建设东莞有哪几家网络开发公司
  • 如何建设招聘网站龙岩网店运营招聘
  • 加强纪检监察网站建设网站建设利益
  • wordpress 整站语言wordpress+网站白屏
  • 个人网站建设的背景响应式网站源码.net
  • 烽盈网站建设哪里有免费的网站源码
  • 网站开发工程师前景建公司网站建设明细报价表
  • 合肥瑶海区寒假兼职工网站建设辽宁省建设工程信息网a类业绩
  • 专业型网站和个人网站上海网用软件有限公司
  • 深圳专业营销网站西安网站建设专家
  • 陕西的网站建设公司排名乡村建设的网站
  • dede网站网页主页链接柯城区住房和城乡建设局网站
  • 做弹幕网站有哪些wordpress保护原创
  • 西安seo网站优化修改后台代码wordpress2018
  • 目前最好的网站建设企业做电商网站的参考书
  • 岷县城乡建设局网站google秒收录方法
  • 怎么为自己的厂做网站惠民县建设网站
  • 各大网站流量排名网站期刊怎么做
  • 网站建设的课件南京尚网网络科技有限公司
  • 台州网站制作台州网站建设php编程用什么软件
  • 网站模板图册商务网站的建设
  • 用静态网站更新长春 网站 设计
  • 专业SEO教程网站德州网站建设哪一家好
  • 网站开发费用算无形资产转包网站建设做非法事情