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

自己建网站要多少钱河南百度关键词优化排名软件

自己建网站要多少钱,河南百度关键词优化排名软件,市直单位政府网站建设问题,福建龙岩发现1例阳性定义:Define a family of algorithms,encapsulate each one,and make them interchangeable.(定义一组 算法,将每个算法都封装起来,并且使它们之间可以互换。)策略模式通用类图策略设计模式的核心是封装变化。它把不同…

定义:

        Define a family of algorithms,encapsulate each one,and make them interchangeable.(定义一组 算法,将每个算法都封装起来,并且使它们之间可以互换。)

策略模式通用类图

        策略设计模式的核心是封装变化。它把不同的算法或行为封装成独立的策略类,这些策略类实现相同的策略接口。客户端持有策略接口的引用,通过切换具体的策略对象,就能改变自身的行为。这种设计方式将算法的实现细节与客户端分离,使得客户端代码更加简洁,同时方便新增或修改算法策略,符合开闭原则,提高了系统的可维护性和可扩展性。

角色:

策略模式包含以下几个核心角色:

1、抽象策略(Strategy)

        抽象策略是一个接口或抽象类,它定义了所有具体策略类都必须实现的方法。这些方法代表了具体策略的行为,为具体策略类提供统一的抽象接口,使得客户端可以以一致的方式使用不同的策略。

2、具体策略(Concrete Strategy)

        具体策略是抽象策略的实现类,每个具体策略类对应一种具体的算法或行为方式。在具体策略类中,实现抽象策略定义的方法,完成具体的业务逻辑。不同的具体策略类可以有不同的实现方式,相互之间可以自由替换。

3、上下文(Context)

        上下文是使用策略的类,它持有一个抽象策略对象的引用,并提供方法让客户端设置具体的策略对象。上下文在执行相关操作时,会调用策略对象的方法,将具体的行为委托给策略对象来完成,而不关心具体策略的实现细节。

代码示例:

        在电商系统中,不同的促销活动有不同的折扣计算方式,如打折、满减、赠品等,使用策略设计模式实现促销策略的灵活切换。

// 抽象策略:促销策略接口

public interface PromotionStrategy {double calculateDiscount(double originalPrice);}

// 具体策略:打折策略

public class DiscountStrategy implements PromotionStrategy {private double discountRate;public DiscountStrategy(double discountRate) {this.discountRate = discountRate;}@Overridepublic double calculateDiscount(double originalPrice) {return originalPrice * discountRate;}}

// 具体策略:满减策略

public class FullReductionStrategy implements PromotionStrategy {private double fullAmount;private double reductionAmount;public FullReductionStrategy(double fullAmount, double reductionAmount) {this.fullAmount = fullAmount;this.reductionAmount = reductionAmount;}@Overridepublic double calculateDiscount(double originalPrice) {if (originalPrice >= fullAmount) {return originalPrice - reductionAmount;}return originalPrice;}}

// 上下文:购物车类

public class ShoppingCart {private PromotionStrategy promotionStrategy;public void setPromotionStrategy(PromotionStrategy promotionStrategy) {this.promotionStrategy = promotionStrategy;}public double calculateFinalPrice(double originalPrice) {return promotionStrategy.calculateDiscount(originalPrice);}}

// 客户端代码

public class StrategyPatternClient {public static void main(String[] args) {ShoppingCart shoppingCart = new ShoppingCart();// 使用打折策略,打8折PromotionStrategy discountStrategy = new DiscountStrategy(0.8);shoppingCart.setPromotionStrategy(discountStrategy);double originalPrice1 = 200;double finalPrice1 = shoppingCart.calculateFinalPrice(originalPrice1);System.out.println("原价:" + originalPrice1 + "元,使用打折策略后的价格:" + finalPrice1 + "元");// 使用满减策略,满150减30PromotionStrategy fullReductionStrategy = new FullReductionStrategy(150, 30);shoppingCart.setPromotionStrategy(fullReductionStrategy);double originalPrice2 = 200;double finalPrice2 = shoppingCart.calculateFinalPrice(originalPrice2);System.out.println("原价:" + originalPrice2 + "元,使用满减策略后的价格:" + finalPrice2 + "元");}}

优点 :

1、提高代码的灵活性和可扩展性:策略设计模式将算法和行为封装成独立的策略类,客户端可以在运行时自由切换策略,无需修改上下文代码。新增策略时,只需创建新的具体策略类实现抽象策略接口,符合开闭原则,方便系统功能的扩展。

2、增强代码的可读性和可维护性:避免了大量条件语句的使用,将不同的算法或行为逻辑分散到具体的策略类中,使代码结构更加清晰,每个策略类的职责单一,便于理解和维护。

3、实现代码复用:具体策略类可以被多个上下文对象复用,减少了代码的重复开发,提高了代码的复用性。例如,在多个电商系统模块中都可以复用相同的促销策略类。


缺点:

1、增加类的数量:每个具体策略都需要一个独立的类来实现,当策略数量较多时,会导致系统中类的数量大幅增加,增加了代码的复杂性和管理难度。

2、客户端需要了解策略细节:客户端在使用策略设计模式时,需要了解不同策略的功能和特点,以便选择合适的策略。这在一定程度上增加了客户端的使用难度,尤其是当策略种类繁多时。

3、策略间的依赖管理:在某些情况下,不同策略之间可能存在依赖关系或数据共享,需要额外处理这些关系,增加了代码的维护成本。例如,某些促销策略可能依赖于商品的库存信息。


使用场景: 

(一)存在多种可互换的算法或行为

        当系统中存在多种不同的算法或行为方式,且这些算法或行为在逻辑上是等价的,可以相互替换时,适合使用策略设计模式。例如,排序算法(冒泡排序、快速排序、归并排序)、加密算法(MD5、SHA - 256)等场景。

(二)需要在运行时动态切换算法或行为

        如果客户端需要在运行时根据不同的条件或用户需求动态地选择不同的算法或行为,策略设计模式可以轻松实现这一需求。比如,在导航软件中,用户可以选择不同的路线规划策略(最短路径、最快路径、躲避拥堵)。

(三)避免使用大量条件语句

        当使用条件语句(如if - else、switch - case)来判断不同算法或行为会导致代码冗长、难以维护时,策略设计模式可以将每个算法或行为封装成独立的策略类,使代码结构更加清晰,易于维护和扩展。

(四)实现代码的复用和扩展

        策略设计模式将算法或行为封装在具体策略类中,这些策略类可以被多个上下文对象复用。同时,新增策略类也非常方便,只需要实现抽象策略接口,符合开闭原则,有利于系统的功能扩展。

        策略设计模式通过将算法和行为封装成独立的策略类,为软件开发提供了一种灵活、高效的解决方案。它在电商促销、游戏开发、算法选择等众多领域有着广泛的应用,能够有效提高代码的灵活性、可扩展性和可维护性。然而,在使用策略设计模式时,也需要注意其带来的类数量增加、客户端使用难度提高等问题。合理运用策略设计模式,能够让我们在面对多种算法或行为切换需求时,编写出更加简洁、优雅且易于维护的代码,使系统在不同策略的切换中保持高效运行。

http://www.dtcms.com/wzjs/1975.html

相关文章:

  • 匿名网站建设营销托管全网营销推广
  • 品牌制作网站网络营销的表现形式有哪些
  • 桂林北京网站建设广州头条今日头条新闻
  • 自媒体网站开发河南郑州最新消息今天
  • 学校网站建设 效果淘宝店铺转让价格表
  • 酒店网站建设的构思网络优化seo是什么工作
  • 网站建设suteng推广策划方案模板
  • 杭州做网站公司哪家好百度快速优化推广
  • 厚街镇网站建设公司企业推广方式
  • 网站备案信息真实性核验单 如何填写商业软文案例
  • 购物网站制作样例想在百度做推广怎么做
  • 自己做网站要钱么广州网络营销推广公司
  • 自己放题库做测试网站临沂seo顾问
  • 网站制作怎么做网站优化排名阿里指数查询手机版
  • 一个好的网站建设沧州网站建设优化公司
  • 企业网站建设的必要性企业应该如何进行网站推广
  • 网站后台运营怎么做广州市口碑seo推广
  • 软件开发和网站开发难度百度下载官网
  • 晋江是哪个省的城市河南网站推广优化
  • 南宁做网站优化凡科建站后属于自己的网站吗
  • 沈阳高端做网站建设ip反查域名网站
  • 对网站建设提建议关键词优化排名第一
  • 无锡网站设计无锡网站建设东莞建设企业网站公司
  • 商城网站 搭建seo网站推广优化
  • 12306网站多少钱做的万网是什么网站
  • 四川营销型网站今日小说排行榜
  • 建设项目竣工环保验收公示网站网络营销方式有几种
  • 网站优化18600119496软件网站关键词优化
  • 防城港做网站seo与sem的区别与联系
  • 用微信做网站互联网宣传方式有哪些