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

网站建设价格很 好乐云seo网站开发后台

网站建设价格很 好乐云seo,网站开发后台,犀牛云做网站一年多少钱,企业营销型网站有哪些之前学习了策略模式加模板方法模式 策略模式单独详解 模板方法模式单独详解 这里回忆起完全可以进行策略和模板方法模式的组合。 import java.util.HashMap; import java.util.Map;// 上下文对象(解决参数传递问题) class OrderContext {private final…

之前学习了策略模式加模板方法模式
策略模式单独详解
模板方法模式单独详解

这里回忆起完全可以进行策略和模板方法模式的组合。

import java.util.HashMap;
import java.util.Map;// 上下文对象(解决参数传递问题)
class OrderContext {private final Map<String, Object> data = new HashMap<>();public OrderContext put(String key, Object value) {data.put(key, value);return this;}public <T> T get(String key) {return (T) data.get(key);}
}// 策略接口
interface OrderProcessingStrategy {boolean validate(OrderContext context);boolean processPayment(OrderContext context);void beforePayment(OrderContext context);void deductInventory(OrderContext context);void sendNotification(OrderContext context);boolean needSpecialNotification(OrderContext context);
}// 抽象模板类(现在只包含算法骨架,不包含具体实现)
abstract class OrderProcessor {protected OrderProcessingStrategy strategy;public OrderProcessor(OrderProcessingStrategy strategy) {this.strategy = strategy;}// 模板方法(final防止子类覆盖)public final void processOrder(OrderContext context) {if (!strategy.validate(context)) {rollback(context);return;}strategy.beforePayment(context);boolean paymentResult = strategy.processPayment(context);if (paymentResult) {strategy.deductInventory(context);if (strategy.needSpecialNotification(context)) {strategy.sendNotification(context); // 这里可以假设sendNotification已经根据needSpecialNotification处理过} else {// 可选:提供一个默认的通知方式,或者不做任何操作System.out.println("发送默认通知给用户");}afterSuccess(context);} else {handlePaymentFailure(context);}}// 公共方法(这些方法现在与策略无关,但仍然是订单处理流程的一部分)protected void rollback(OrderContext context) {System.out.println("执行订单回滚操作");}protected void handlePaymentFailure(OrderContext context) {System.out.println("处理支付失败流程");}protected void afterSuccess(OrderContext context) {System.out.println("订单后续处理");}
}// 具体策略实现:团购订单处理
class GroupBuyOrderProcessingStrategy implements OrderProcessingStrategy {@Overridepublic boolean validate(OrderContext context) {Integer groupSize = context.get("groupSize");System.out.println("验证团购人数:" + groupSize);return groupSize != null && groupSize >= 5;}@Overridepublic boolean processPayment(OrderContext context) {System.out.println("执行团购优惠价支付");return true;}@Overridepublic void beforePayment(OrderContext context) {// 团购一般没有特别的前置支付操作,但可以保留此方法以备扩展}@Overridepublic void deductInventory(OrderContext context) {System.out.println("按团购规则扣减库存");}@Overridepublic void sendNotification(OrderContext context) {System.out.println("发送团购专属通知");}@Overridepublic boolean needSpecialNotification(OrderContext context) {return true;}
}// 具体策略实现:秒杀订单处理
class FlashSaleOrderProcessingStrategy implements OrderProcessingStrategy {@Overridepublic boolean validate(OrderContext context) {System.out.println("验证秒杀资格和库存");return true; // 假设秒杀资格和库存验证总是通过,实际情况需要具体实现}@Overridepublic boolean processPayment(OrderContext context) {System.out.println("执行秒杀价支付(10秒内完成)");return true;}@Overridepublic void beforePayment(OrderContext context) {System.out.println("锁定秒杀库存30秒");}@Overridepublic void deductInventory(OrderContext context) {System.out.println("按秒杀规则扣减库存");}@Overridepublic void sendNotification(OrderContext context) {// 秒杀可以发送特别通知,也可以不发送,或者发送默认通知// 这里我们假设发送默认通知(或者在实际应用中根据业务逻辑决定)System.out.println("发送默认秒杀通知给用户");}@Overridepublic boolean needSpecialNotification(OrderContext context) {return false; // 假设秒杀不需要特别通知,实际情况需要具体实现}
}// 使用示例
public class TemplateMethodPatternWithStrategyExample {public static void main(String[] args) {// 处理团购订单OrderContext groupBuyContext = new OrderContext().put("groupSize", 8).put("productId", 1001);OrderProcessor groupBuyProcessor = new OrderProcessor(new GroupBuyOrderProcessingStrategy());groupBuyProcessor.processOrder(groupBuyContext);System.out.println("\n===============\n");// 处理秒杀订单OrderContext flashSaleContext = new OrderContext().put("userId", "u123456").put("flashSaleId", "fs2023");OrderProcessor flashSaleProcessor = new OrderProcessor(new FlashSaleOrderProcessingStrategy());flashSaleProcessor.processOrder(flashSaleContext);}
}

总结

上面的模板方法由依赖具体策略变成依赖抽象策略接口interface OrderProcessingStrategy,这里就比较好的结合了两个设计模式。


文章转载自:

http://GzwHiTTZ.pqrhb.cn
http://NJYJvHgw.pqrhb.cn
http://2ieLgatp.pqrhb.cn
http://m0EG9Mu9.pqrhb.cn
http://Qi6UNKIw.pqrhb.cn
http://OM17jxGq.pqrhb.cn
http://ZZJRcVab.pqrhb.cn
http://DiZQ8n2c.pqrhb.cn
http://hHU16om3.pqrhb.cn
http://wqcOp5Hw.pqrhb.cn
http://SVr2p1QY.pqrhb.cn
http://kt6lJuol.pqrhb.cn
http://PK8vJyH4.pqrhb.cn
http://VPlFvi6i.pqrhb.cn
http://caTNmjbv.pqrhb.cn
http://JY3jz9Rr.pqrhb.cn
http://fxrAPLTv.pqrhb.cn
http://5b8IHAqc.pqrhb.cn
http://pxjoxJM7.pqrhb.cn
http://T2HeCORf.pqrhb.cn
http://92EiRbYv.pqrhb.cn
http://Qn2mPVia.pqrhb.cn
http://1T9ncwE2.pqrhb.cn
http://SQWiPnKo.pqrhb.cn
http://PFH5sSIe.pqrhb.cn
http://yJQAMMsN.pqrhb.cn
http://2kwFKUq9.pqrhb.cn
http://XzYujcdD.pqrhb.cn
http://BeBftLDe.pqrhb.cn
http://vfa4bOFZ.pqrhb.cn
http://www.dtcms.com/wzjs/734521.html

相关文章:

  • 网站集约化建设要求WordPress国外音乐播放器
  • 做蛋糕招聘网站定制和订制的区别
  • 如何关闭wordpress默认编辑器佛山网站优化推广方案
  • 电商网站建站网络推广最好的网站
  • 号网站开发嵌入式软件工程师待遇
  • php网站开发技术文档北京网站备案代理
  • 浙江龙元建设集团 网站搜索平台
  • 动态电子商务网站 制作Wordpress 外链图片6
  • 秦皇岛建设局局官方网站wordpress 上传按钮
  • 中山视角做网站的公司中国三大生产建设兵团
  • 门户网站 架构杭州网站排名服务
  • 装饰网站设计模板下载无锡找厂网站
  • 做通信毕业设计的网站网站建设需要什么硬件和软件
  • 网站建设无法访问网站旅游网站建设代码
  • 成都高新区规划建设局网站怎么找关键词
  • 科技平台网站建设典型的网络营销企业案例
  • 数学网站怎么做的备案查询系统
  • 电商数据分析师seo网站优化推广怎么做
  • 找网络公司做网站要注意这4个细节国际站wap端流量
  • 免费发布招聘的网站个人运营app需要多少钱
  • t么做文献索引ot网站制作企业网站的软件
  • 所有网站的分辨率小程序免费推广平台
  • 医院网站建设策划案模板自己建一个电商网站吗
  • 手机端网站尺寸福建住房与城乡建设网站
  • 世界服装鞋帽网免费做网站重庆沙坪坝有什么好玩的
  • 四个字网站 域名哪个网站空间好
  • asp.net mvc网站开发之美网站要不要备案
  • 网络科技公司网站建设新产品推广策划方案
  • 母婴用品网站建设公司常见八大职能部门
  • 遵化网站定制如何制作微信打卡小程序