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

苏州市建设交易中心网站首页电影下载网站模板

苏州市建设交易中心网站首页,电影下载网站模板,汕头建站模板搭建,html基础标签策略模式是一种行为型设计模式#xff0c;它允许在运行时根据不同的情况选择不同的算法实现#xff0c;从而使得算法可以独立于客户端而变化。本文将介绍策略模式的概念、应用场景、优点和缺点#xff0c;并提供最佳的代码实践。本文的代码实现将使用Java语言#xff0c;但…策略模式是一种行为型设计模式它允许在运行时根据不同的情况选择不同的算法实现从而使得算法可以独立于客户端而变化。本文将介绍策略模式的概念、应用场景、优点和缺点并提供最佳的代码实践。本文的代码实现将使用Java语言但是策略模式同样适用于其他编程语言。概念策略模式定义了一系列算法并将每个算法封装成一个类使得它们可以互相替换。策略模式让算法的变化独立于使用它们的客户端从而实现了算法和客户端之间的松耦合关系。策略模式通常包含三个角色上下文(Context)、策略(Strategy)和具体策略(ConcreteStrategy)。上下文(Context)定义了客户端所需要的接口并维护一个对策略对象的引用。策略(Strategy)定义了一个公共的接口用于所有具体策略的替换。具体策略(ConcreteStrategy)实现了策略接口并提供了一种具体的算法实现。应用场景策略模式适用于以下场景当需要在运行时根据不同的情况选择不同的算法实现时。当一个算法有多个变体时可以将它们封装成不同的具体策略。当一个类中有很多条件语句时可以考虑使用策略模式来消除这些条件语句。优点和缺点策略模式的优点在于它可以提高代码的可维护性、可扩展性和可复用性使得算法的变化对客户端的影响最小化。同时策略模式还符合开闭原则即对扩展开放对修改关闭当需要添加新的算法时只需要增加一个新的具体策略即可而不需要修改原有的代码。策略模式的缺点在于它会增加代码的复杂度因为需要定义多个策略类和上下文类。同时策略模式还可能会导致客户端代码变得复杂因为客户端需要了解不同的策略类和它们的区别从而选择合适的策略。最佳实践下面是一个策略模式的示例代码它模拟了一个商品打折的场景。假设一个商店需要根据不同的季节和VIP等级来对商品进行不同的打折我们可以使用策略模式来实现这个场景。首先我们定义一个商品类它包含了商品的名称和价格。public class Product {private String name;private double price;public Product(String name, double price) {this.name name;this.price price;}public String getName() {return name;}public double getPrice() {return price;} }然后我们定义一个策略接口它包含了一个方法用于计算打折后的价格。public interface DiscountStrategy {double getDiscountedPrice(Product product); }接下来我们实现三个具体策略类分别表示不打折、季节折扣和VIP折扣。public class NoDiscountStrategy implements DiscountStrategy {Overridepublic double getDiscountedPrice(Product product) {return product.getPrice();} } public class SeasonDiscountStrategy implements DiscountStrategy {Overridepublic double getDiscountedPrice(Product product) {return product.getPrice() * 0.9;} } public class VIPDiscountStrategy implements DiscountStrategy {Overridepublic double getDiscountedPrice(Product product) {return product.getPrice() * 0.8;} }最后我们定义一个上下文类它包含了一个对策略对象的引用并提供了一个方法用于计算打折后的价格。public class ProductContext {private DiscountStrategy strategy;public void setStrategy(DiscountStrategy strategy) {this.strategy strategy;}public double getDiscountedPrice(Product product) {return strategy.getDiscountedPrice(product);} }现在我们可以在客户端代码中使用这些类来计算商品的打折价格了。public class Main {public static void main(String[] args) {ProductContext context new ProductContext();context.setStrategy(new NoDiscountStrategy());Product product1 new Product(Product 1, 100.0);System.out.println(Original price: product1.getPrice());System.out.println(Discounted price: context.getDiscountedPrice(product1)); // 输出 100.0context.setStrategy(new SeasonDiscountStrategy());Product product2 new Product(Product 2, 100.0);System.out.println(Original price: product2.getPrice());System.out.println(Discounted price: context.getDiscountedPrice(product2)); // 输出 90.0context.setStrategy(new VIPDiscountStrategy());Product product3 new Product(Product 3, 100.0);System.out.println(Original price: product3.getPrice());System.out.println(Discounted price: context.getDiscountedPrice(product3)); // 输出 80.0} }在上面的代码中我们首先创建了一个ProductContext对象并设置了一个策略对象NoDiscountStrategy。然后我们创建了一个商品Product对象并通过ProductContext对象来计算打折后的价格。接着我们分别设置SeasonDiscountStrategy和VIPDiscountStrategy作为策略对象再次计算商品的打折价格。最后我们输出了原价和打折后的价格。这样我们就使用策略模式实现了商品打折的场景。如果需要添加新的打折策略只需要实现一个新的具体策略类并在客户端代码中设置即可而不需要修改原有的代码。
http://www.hkea.cn/news/14462490/

相关文章:

  • 怎么查网站后台地址网站更改了资料 百度什么时侯来抓取
  • 学做网站需要多长时间国际购物网站排名
  • 自己建一个网站做电子商务北京黄页
  • 在哪个网站可以搜索做凉菜视频模板网站多钱
  • 阿里云怎么部署网站网络营销是什么时候出现的
  • 合肥公司网站搭建服务商西安自助建站
  • 网站频繁被攻击怎么办专业做网站建设公司怎么样
  • 有什么做任务得佣金的网站wordpress淘点金
  • wordpress多站点用户同步网站开发人员 生活
  • 网站建设专业的公司wordpress小论坛小程序
  • 海口网站建设是什么意思门户网站的首页模板
  • 深圳企业网站建设服务平台wordpress相册插件中文
  • 做网站都需要准备什么软件wordpress怎么中文字体
  • 刷赞网站怎么做的楚雄市住房和城乡建设局网站
  • 上海门户网站制网络服务器配置与管理考试题
  • 手机参数网北京网站优化校学费
  • 专业网站建设效果显著百度推广话术全流程
  • 小米手机如何做游戏视频网站开发公司财务管理制度
  • 有没有那个的网站wordpress未能连接到ftp服务器
  • 西安网站设计制云南网站开发公司
  • 四川做网站的公司哪家好潍坊seo网站推广
  • 网站建设服务合同印花税深圳注册公司需要什么资料
  • 手机网站设计公司只找亿企邦医院 网站建设 新闻
  • 企业网站模板哪个好网站设计评级
  • 有什么可以做兼职的网站网站忧化技巧
  • 东莞商城网站建设哪里比较好贵州专业网站建设公司哪家好
  • 韶关建设局网站微信h5页面制作免费软件
  • 定州哪里可以做网站做线上网站需要钱吗
  • 模板网站建设信息第一装修网
  • 深圳四站合一网站建设电话找建筑师设计房子