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

引航博景网站做的好吗itme收录优美图片官网

引航博景网站做的好吗,itme收录优美图片官网,网站建设唯地带,游戏制作公司开发策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户端代码,使得算法的变化不会影响到使用该算法的客户端…

策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户端代码,使得算法的变化不会影响到使用该算法的客户端。

原理

  • 策略接口(Strategy Interface): 定义了所有支持的算法的公共操作。
  • 具体策略类(Concrete Strategies): 实现了策略接口,每个类代表一个具体的算法或行为。
  • 上下文(Context): 拥有一个对策略对象的引用,负责调用策略对象的执行方法,并在需要时切换策略。

Java代码示例

// 策略接口
public interface PaymentStrategy {void pay(double amount);
}// 具体策略类:信用卡支付策略
public class CreditCardStrategy implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("Paid " + amount + " using credit card.");// 实际支付逻辑...}
}// 具体策略类:支付宝支付策略
public class AlipayStrategy implements PaymentStrategy {@Overridepublic void pay(double amount) {System.out.println("Paid " + amount + " using Alipay.");// 实际支付逻辑...}
}// 上下文:购物车
public class ShoppingCart {private List<Item> items;private PaymentStrategy paymentStrategy;public void setPaymentStrategy(PaymentStrategy strategy) {this.paymentStrategy = strategy;}public void checkout() {double total = calculateTotal();paymentStrategy.pay(total);}// 其他购物车相关的方法...
}// 客户端使用示例
public class Client {public static void main(String[] args) {ShoppingCart cart = new ShoppingCart();// 设置支付策略为信用卡支付cart.setPaymentStrategy(new CreditCardStrategy());cart.checkout(); // 输出:Paid ... using credit card.// 改变支付策略为支付宝支付cart.setPaymentStrategy(new AlipayStrategy());cart.checkout(); // 输出:Paid ... using Alipay.}
}

设想你经营一家餐厅,顾客可以选择不同的支付方式进行结账,比如现金、刷卡或手机支付。每种支付方式就是一个策略,当顾客选择某种支付方式时,服务员就执行相应的“策略”,即进行相应的支付处理。策略模式在这里的作用就是让服务员(上下文)可以根据客户要求灵活地调用不同支付方式(策略)的结账流程,而无需知道每种支付方式的具体实现细节。

应用

  • 支付系统:不同的支付方式(如信用卡、支付宝、微信支付等)可以用不同的策略来实现,用户选择不同的支付方式时,系统只需调用对应的策略即可完成支付操作。
  • 游戏AI:根据不同的场景和敌人类型,游戏角色可能有不同的战斗策略,每种策略都由一个具体策略类表示。
  • 排序算法:对于排序功能,可以创建多个实现不同排序算法(如冒泡排序、快速排序、归并排序)的具体策略类,根据需求动态切换排序策略。

适用性

  • 算法的多样化选择:当系统需要在多种算法之间进行切换时,例如排序算法、搜索算法、加密算法等,每种算法都可以封装成一个具体策略类。
  • 行为的动态变化:根据不同的运行环境或条件,对象的行为可以动态改变。例如游戏中的角色可能有不同的战斗策略,可以根据敌人类型或场景变化来实时切换。
  • 业务规则可配置:在业务逻辑中,如果存在多种规则或策略,且这些规则可能会频繁变更或扩展,通过策略模式可以让用户自行配置使用哪种规则,从而提高系统的灵活性和可扩展性。
  • 避免多重条件判断:在代码中有大量if-else或者switch-case语句用于选择不同行为时,可以考虑使用策略模式将每种行为封装为一个策略类,减少代码耦合度并增强可读性。
  • 遵循开闭原则:新的策略可以通过增加新的策略类轻松添加到系统中,而无需修改现有代码,这符合面向对象设计原则中的“对扩展开放,对修改关闭”。
http://www.yayakq.cn/news/621834/

相关文章:

  • 网站设计在线黔东南州住房和城乡建设局网站
  • 做付费推广哪个网站好网站推广策划书的特点有哪些
  • 广州网站建设 广州亦客网络企业官方网站建设如何
  • 网站平台怎么做让wordpress 文章 id重新排列
  • 做网站一定要用cms吗织梦做的网站打开不是
  • 网站系统方案设计惠州市+网站开发公司
  • 沈阳网站关键词优化排名wordpress 黑糖
  • 攀枝花网站开发代价网站建设
  • 谷歌网站网站建设费要交印花税吗
  • 织梦 公司网站模板中国网新闻
  • 郑州网站开发douyanet陕西建设网成绩查询
  • 引流软件下载站建设校园网站的背景及意义
  • 为什么做网站结构优化网站建设哪家学校好
  • 中国空间站图片做网站需要的技术
  • 一款教育培训咨询有限公司网站源码服务器搭建网站环境
  • 免费cms建站五指企业线上推广公司
  • 免费网站app哪个最好百度收录快的网站
  • 一般网站的宽度河源网站制作
  • 做网站最好要买什么东西在线无限观看次数破解版
  • 做民俗酒店到哪些网站推荐专业做旅游网站
  • 珠海市建设工程造价协会网站响应式设计的网站
  • 网站做服务端浙江坤宇建设有限公司 网站
  • 手机网站建设设计深圳的企业排名
  • 360网站认证域名跳转短链接生成
  • 生产企业网站欣赏海外模板网站有哪些
  • 住建部网站村镇建设管理平台策划方案范文
  • 上海专业网站建设公司有哪些学游戏设计去哪个学校
  • 网站建设的经验总结微商城系统销售
  • 怎么做跳转网站首页房屋设计图制作软件
  • 网站设计软件培训怎么样网页设计培训高清图集