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

南京外贸网站建设公司wordpress设置网址错

南京外贸网站建设公司,wordpress设置网址错,哈尔滨网站建设网站制作,企业微信软件本文已收录至Github#xff0c;推荐阅读 #x1f449; Java随想录 微信公众号#xff1a;Java随想录 文章目录 使用场景策略模式实现策略模式的优缺点策略模式优化使用Map取消 Context 类策略枚举解决策略类膨胀SpringBoot中的策略模式 总结 在软件开发中#xff0c;经常会…本文已收录至Github推荐阅读 Java随想录 微信公众号Java随想录 文章目录 使用场景策略模式实现策略模式的优缺点策略模式优化使用Map取消 Context 类策略枚举解决策略类膨胀SpringBoot中的策略模式 总结 在软件开发中经常会遇到需要根据不同的条件来实现不同行为的场景。这种场景下策略模式Strategy Pattern就是一种非常有用的设计模式。 策略模式属于行为型模式允许我们定义一系列算法并将其封装在独立的策略类中使得它们可以互相替换。通过使用策略模式我们能够灵活地选择和切换不同的算法而无需修改原有的代码替代⼤量 if else 的逻辑。 使用场景 策略模式通常在以下情况下被使用 当存在多种实现方式且需要在运行时动态选择具体实现时策略模式非常有用。例如一个购物应用可能需要根据用户的会员等级来计算折扣不同等级对应不同的计算方式这时就可以使用策略模式来实现。当存在一组类似的行为只是实现细节略有不同但又不希望通过继承来添加新的子类时策略模式也很适用。它将这组行为封装在独立的策略类中并通过委托的方式在上下文对象中使用。 例如 支付方式选择一个电子商务平台可以根据用户的选择来使用不同的支付策略例如信用卡支付、支付宝支付、微信支付等。排序算法选择一个排序工具可以根据用户的需求选择不同的排序算法例如快速排序、归并排序等。数据验证一个表单验证工具可以根据不同的验证规则采用不同的验证策略例如长度验证、格式验证等。 这些只是策略模式的一些例子实际应用场景非常丰富。通过使用策略模式我们可以将算法或行为与具体的业务逻辑解耦使得系统更加灵活和可扩展。 策略模式实现 在策略模式中有三个核心角色上下文Context、策略接口Strategy和具体策略类Concrete Strategy。 上下文Context封装了具体策略的执行逻辑提供给客户端使用的接口。上下文通常包含一个指向策略接口的引用用于调用具体策略的方法。策略接口Strategy定义了一组算法或行为的公共接口所有具体策略都必须实现该接口。具体策略类Concrete Strategy实现了策略接口提供了具体的算法或行为。 下面我们来实现一下策略模式 步骤 1 创建策略接口。 //策略接口 public interface PaymentStrategy {void pay(double amount); }步骤2 创建策略接口实现类。 //具体策略类 public class CreditCardPayment implements PaymentStrategy {public void pay(double amount) {System.out.println(使用信用卡支付 amount);// 具体的支付逻辑} }public class WeChatPay implements PaymentStrategy {public void pay(double amount) {System.out.println(使用微信支付 amount);// 具体的支付逻辑} }注意在实际项目中我们一般通过工厂方法模式来实现策略类的声明。 实现关系如下 步骤 3 创建 Context 类。 // 上下文类 public class PaymentContext {private PaymentStrategy paymentStrategy;public PaymentContext(PaymentStrategy paymentStrategy) {this.paymentStrategy paymentStrategy;}public void pay(double amount) {paymentStrategy.pay(amount);} }调用一下 // 使用示例 public class Main {public static void main(String[] args) {PaymentStrategy strategy new CreditCardPayment();PaymentContext context new PaymentContext(strategy);context.pay(100.0);strategy new WeChatPay();context new PaymentContext(strategy);context.pay(200.0);} }输出 使用信用卡支付100.0 使用微信支付200.0在上面的代码中我们定义了一个 PaymentStrategy 接口作为策略接口两个具体的策略类 CreditCardPayment 和 WeChatPay 实现了该接口。然后我们创建了一个 PaymentContext 上下文对象并根据需要传入不同的策略实例进行支付操作。 策略模式的优缺点 策略模式的优点包括 松耦合策略模式将不同的策略封装在独立的类中与上下文对象解耦增加了代码的灵活性和可维护性。易于扩展可以通过添加新的策略类来扩展系统的功能无需修改现有代码。符合开闭原则对于新的策略无需修改上下文对象只需要实现新的策略接口即可。 策略模式的缺点包括 类数量增多每个具体策略都需要一个独立的类如果策略较多将导致类的数量增加。上层必须知道所有策略类上层模块必须知道有哪些策略并选择合适的策略进行使用这与迪米特法则是相违背的我只是想使用了一个策略我凭什么就要了解这个策略呢那要你的封装类还有什么 意义这是原装策略模式的一个缺点。 注意事项 如果一个系统的策略多于四个就需要考虑使用混合模式解决策略类膨胀的问题否则日后的系统维护就会成为一个烫手山芋。 策略模式优化 使用Map取消 Context 类 我们可以将策略实现类放进 Map 中根据 key 去选择具体的策略就不必事先定义 Context 类。 public static void main(String[] args) {MapString, PaymentStrategy mapnew HashMap();map.put(CREDIT_CARD, new CreditCardPayment());map.put(WECHAT_PAY,new WeChatPay());map.get(CREDIT_CARD).pay(100.0);map.get(WECHAT_PAY).pay(200.0);} 策略枚举解决策略类膨胀 策略枚举可以解决策略类过多的问题。 我们对原装的策略模式进行改造把原有定义在抽象策略中的方法移植到枚举中让枚举成员成为一个具体策略。 Slf4j public enum PaymentStrategyEnum {CREDIT_CARD {Overridepublic void pay(double amount) {log.info(使用信用卡支付 amount);// 具体的支付逻辑}},WECHAT_PAY {Overridepublic void pay(double amount) {log.info(使用微信支付 amount);// 具体的支付逻辑}};public abstract void pay(double amount); }在上面的代码中我们定义了一个枚举类型 PaymentStrategy其中包含两个枚举常量 CREDIT_CARD 和 WECHAT_PAY。每个枚举常量都重写了 pay() 方法用于具体的支付逻辑。 // 使用示例 public static void main(String[] args) {MapString, PaymentStrategyEnum mapnew HashMap();map.put(CREDIT_CARD, PaymentStrategyEnum.CREDIT_CARD);map.put(WECHAT_PAY, PaymentStrategyEnum.WECHAT_PAY);map.get(CREDIT_CARD).pay(100.0);map.get(WECHAT_PAY).pay(200.0);}注意策略枚举是一个非常优秀和方便的模式但是它受枚举类型的限制每个枚举项都是 public、final、static 的扩展性受到了一定的约束因此在系统开发中策略枚举一般担当不经常发生变化的角色。 SpringBoot中的策略模式 SpringBoot中使用策略模式更加方便 public interface Test {void print(String name); }Service(testA) Slf4j public class TestA implements Test{Overridepublic void print(String name) {log.info(实现类Aname);} } Service(testB) Slf4j public class TestB implements Test{Overridepublic void print(String name) {log.info(实现类Bname);} } 使用的时候 Autowired 或者 Resource 即可SpringBoot会帮我们把实现类自动注入注入Map。 Resource private MapString,Test map;Test test map.get(你想拿出的具体策略类); test.print(hello world);总结 策略模式是一种强大而灵活的设计模式它可以帮助我们处理不同的算法或行为并使系统更具可维护性和扩展性。通过封装具体的策略类和使用上下文对象我们可以轻松地选择和切换不同的策略而无需修改现有的代码。
http://www.pierceye.com/news/953728/

相关文章:

  • 网站建设模块化实现企业网站建设范文
  • 网站培训班有哪些课程中国工程建设标准化协会官方网站
  • 医院网站建设 费用做商业网站
  • 网站设计考虑因素wordpress录入表单写数据库
  • 个人博客网站设计网站优化方式有哪些
  • 网站建设文化教程网站开发建设成本
  • 洛阳做网站公司汉狮价格wordpress移动端悬浮导航
  • 免费网站的代码wordpress给分类添加自定义栏目
  • 网站建设额怎么自己做网站app
  • 长沙市网站推广电话兰州的互联网公司有哪些
  • 湖南网站设计亮点昆山高端网站设计公司
  • 自己做网站教程客户管理系统免费版
  • 购买域名后怎么使用山东seo
  • 单位写材料素材网站孝感建设局网站
  • 做win精简系统的网站免费找客户网站
  • 腾和企业网站 优帮云网站建设岗位说明
  • 城市建设网站淮安哪有专业做网站的公司
  • 作风建设提升年活动网站毕节公司做网站
  • access数据库网站广州建网站哪儿济南兴田德润简介
  • 上海网站建设seo抖音短剧推广怎么做
  • 京东网站建设策划书网站建设常用编程语言
  • 济南教育论坛网站建设page n wordpress
  • 网站域名在山东备案却在苏州产教融合信息门户网站建设方案
  • 南京网站网站建设传奇网页
  • 网站后台更新怎么做详情页怎么设计
  • 网站怎么做导航wordpress付费破解
  • 宁津网站建设国内免费设计素材网站
  • 泰安有口碑的企业建站公司二手汽车手机网站模板
  • 网站百度快照怎么做网站调用谷歌地图
  • 扫描二维码进入公司网站怎样做代做关键词收录排名