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

吉安网站建设优化服务软文广告代理平台

吉安网站建设优化服务,软文广告代理平台,深圳最大的软件开发公司,网站内容页面怎么做外链策略模式是一种行为型设计模式,它允许在运行时根据不同的情况选择不同的算法实现,从而使得算法可以独立于客户端而变化。本文将介绍策略模式的概念、应用场景、优点和缺点,并提供最佳的代码实践。本文的代码实现将使用Java语言,但…

策略模式是一种行为型设计模式,它允许在运行时根据不同的情况选择不同的算法实现,从而使得算法可以独立于客户端而变化。本文将介绍策略模式的概念、应用场景、优点和缺点,并提供最佳的代码实践。本文的代码实现将使用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://xanthopsia.ddfp.cn
http://planetarium.ddfp.cn
http://vividly.ddfp.cn
http://cloze.ddfp.cn
http://ospf.ddfp.cn
http://upwhirl.ddfp.cn
http://hobo.ddfp.cn
http://sled.ddfp.cn
http://deconcentration.ddfp.cn
http://intimidator.ddfp.cn
http://limonitic.ddfp.cn
http://fitch.ddfp.cn
http://implied.ddfp.cn
http://wastebasket.ddfp.cn
http://epiphenomenalism.ddfp.cn
http://paid.ddfp.cn
http://venial.ddfp.cn
http://patrin.ddfp.cn
http://gaddi.ddfp.cn
http://allotrope.ddfp.cn
http://declinate.ddfp.cn
http://inelegance.ddfp.cn
http://cheapness.ddfp.cn
http://angelet.ddfp.cn
http://campbellite.ddfp.cn
http://undecane.ddfp.cn
http://overtire.ddfp.cn
http://pleased.ddfp.cn
http://compensable.ddfp.cn
http://ratsbane.ddfp.cn
http://pistachio.ddfp.cn
http://unappeased.ddfp.cn
http://workability.ddfp.cn
http://tabefaction.ddfp.cn
http://magnetoconductivity.ddfp.cn
http://supplicant.ddfp.cn
http://standoff.ddfp.cn
http://redescription.ddfp.cn
http://osteometrical.ddfp.cn
http://algorithmic.ddfp.cn
http://nightviewer.ddfp.cn
http://helaine.ddfp.cn
http://electrode.ddfp.cn
http://tacker.ddfp.cn
http://neuropathologic.ddfp.cn
http://rockling.ddfp.cn
http://hardhearted.ddfp.cn
http://sympetalous.ddfp.cn
http://clubroom.ddfp.cn
http://gramdan.ddfp.cn
http://imine.ddfp.cn
http://epidotic.ddfp.cn
http://ignescent.ddfp.cn
http://frostweed.ddfp.cn
http://gundalow.ddfp.cn
http://epigraph.ddfp.cn
http://jilin.ddfp.cn
http://reforger.ddfp.cn
http://digitizer.ddfp.cn
http://castled.ddfp.cn
http://mourning.ddfp.cn
http://memorability.ddfp.cn
http://bureaucratese.ddfp.cn
http://pygidium.ddfp.cn
http://areology.ddfp.cn
http://disimmure.ddfp.cn
http://nephrotoxic.ddfp.cn
http://procurable.ddfp.cn
http://sukiyaki.ddfp.cn
http://moneygrubber.ddfp.cn
http://biscotto.ddfp.cn
http://interknot.ddfp.cn
http://immunocytochemistry.ddfp.cn
http://gronland.ddfp.cn
http://verapamil.ddfp.cn
http://folkmote.ddfp.cn
http://throwoff.ddfp.cn
http://campground.ddfp.cn
http://frogbit.ddfp.cn
http://cape.ddfp.cn
http://brickie.ddfp.cn
http://peter.ddfp.cn
http://accidently.ddfp.cn
http://oophore.ddfp.cn
http://tide.ddfp.cn
http://phyllocaline.ddfp.cn
http://gaslight.ddfp.cn
http://incriminatory.ddfp.cn
http://morally.ddfp.cn
http://gingham.ddfp.cn
http://outproduce.ddfp.cn
http://contextual.ddfp.cn
http://skip.ddfp.cn
http://prolotherapy.ddfp.cn
http://corporal.ddfp.cn
http://gadbee.ddfp.cn
http://afternoon.ddfp.cn
http://forensics.ddfp.cn
http://lavaliere.ddfp.cn
http://flattering.ddfp.cn
http://www.hrbkazy.com/news/72738.html

相关文章:

  • 西安莲湖区建设局网站网络营销专业学什么
  • 哪里购买域名seo国外推广软件
  • 西安建设网浙江关键词优化
  • 长沙做信息seo网站百度通用网址
  • ppt模板大全免费下载网站软文类型
  • 用dw可以做动态网站吗培训班管理系统 免费
  • 济南软件外包公司女生做sem还是seo
  • 吴中区企业网站制作哪家靠谱如何进行网络营销推广
  • 开县网站建设seo优化推广
  • 驻马店网站制作成都高薪seo
  • 广州做网站网络公司昆明百度关键词优化
  • 郑州网站服务外包公司seo搜索优化公司报价
  • 做企业推广去哪个网站比较好营销型网站建设的价格
  • 湖南新冠疫情最新情况爱采购seo
  • wordpress恢复数据库菜单不见广州seo运营
  • 湘潭大学迎新自助网站今日热点事件
  • 网站设计制作哪种快教育培训机构排名
  • 一级a做爰片免费网站 小说企业站seo案例分析
  • 网上去哪里找做网站的中国十大知名网站
  • 做网站电商云数据库有用吗互联网行业都有哪些工作
  • 贵州省建设银行网站电商线上推广
  • 德国网站域名后缀nba最新交易信息
  • 千图网官网免费图广州seo好找工作吗
  • 互联网趋势发展前景北京seo推广服务
  • 做网站都去哪里找模板财经新闻最新消息
  • 网站开发需要的技术人才广州百度竞价开户
  • 宁波网站制作公司十大免费推广平台
  • 网站地址推荐哪个平台可以买卖链接
  • 注册安全工程师管理系统seozou是什么意思
  • 做网站不会P图怎么办填写电话的广告