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

去除WordPress注册功能沈阳网站seo公司

去除WordPress注册功能,沈阳网站seo公司,网站赏析,三分钟做网站定义一系列算法,将每个算法封装成独立的对象,并使这些对象可互相替换。这使得在运行时可以动态地选择算法,而不必改变使用算法的客户端代码。策略模式的主要目标是将算法的定义与使用分离,使得客户端可以根据需要灵活地选择和切换…

定义一系列算法,将每个算法封装成独立的对象,并使这些对象可互相替换。这使得在运行时可以动态地选择算法,而不必改变使用算法的客户端代码。策略模式的主要目标是将算法的定义与使用分离,使得客户端可以根据需要灵活地选择和切换不同的算法,而不影响到客户端代码的稳定性。

策略模式的使用场景

  1. 多种算法实现:
    当一个问题有多种算法实现时,可以使用策略模式来将这些算法封装成独立的策略类,使得这些算法可以互相替换,而不影响客户端代码。
  2. 避免条件判断:
    当存在大量的条件语句来选择不同的行为时,可以使用策略模式将这些行为封装成策略类,从而减少条件判断,提高代码的可读性和可维护性。
  3. 算法变化频繁:
    如果系统中的算法经常需要变化,使用策略模式可以方便地新增、修改和替换算法,而不必修改客户端代码。
  4. 开闭原则支持:
    策略模式支持开闭原则,可以在不修改已有代码的情况下扩展系统功能。
  5. 分层架构:
    在分层架构中,策略模式可以用于将业务逻辑与具体的实现分离,使得业务逻辑层和具体实现层解耦。
  6. 配置灵活性:
    当需要根据配置文件或用户输入来选择不同的行为时,策略模式可以提供灵活的配置方式。
  7. 测试和维护性:
    由于策略模式将不同的算法分离成独立的策略类,可以更方便地进行单元测试和维护。

策略模式主要角色

  1. 策略接口
    定义了一组算法的共同接口,具体策略类需要实现这个接口。它通常包含一个或多个抽象方法,用于定义不同算法的行为。
  2. 具体策略类
    实现了策略接口,即具体的算法逻辑。每个具体策略类负责实现一个特定的算法。具体策略类之间是可以相互替换的,客户端代码不需要知道具体算法的实现细节。
  3. 上下文
    持有一个策略对象,并在需要时调用策略的方法。上下文将算法的执行委托给具体的策略对象。上下文也可以包含一些辅助方法,用于操作策略对象。

策略模式的流程

  1. 客户端创建一个上下文对象,并设置具体的策略对象。
  2. 当客户端需要执行特定算法时,它调用上下文的方法,上下文会将请求委托给具体策略对象
  3. 具体策略对象执行算法,并将结果返回给上下文,上下文将结果传递给客户端。

策略模式java代码示例

实现一生鲜市场到点打折活动
策略接口

// 策略接口
public interface DiscountStrategy {double applyDiscount(double originalPrice);
}

策略实现类

public class RegularDiscount implements DiscountStrategy{@Overridepublic double applyDiscount(double originalPrice) {return originalPrice;//原价}
}public class SaleDiscount implements DiscountStrategy {@Overridepublic double applyDiscount(double originalPrice) {return originalPrice*0.8;//8折}
}public class SpecialDiscount  implements DiscountStrategy{@Overridepublic double applyDiscount(double originalPrice) {return originalPrice*0.5;//5折}
}

上下文

// 上下文类
public class ShoppingCart{private DiscountStrategy discountStrategy;public void setDiscountStrategy(DiscountStrategy discountStrategy) {this.discountStrategy = discountStrategy;}//获取最新价格public double getPrice(double regularPrice){return discountStrategy.applyDiscount(regularPrice);}}

客户端

public static void main(String[] args) {ShoppingCart cart = new ShoppingCart();double originalPrice = 100.0;double discountedPrice;cart.setDiscountStrategy(new RegularDiscount());discountedPrice = cart.getPrice(originalPrice);System.out.println("8点价格:"+discountedPrice);cart.setDiscountStrategy(new SaleDiscount());discountedPrice = cart.getPrice(originalPrice);System.out.println("9点价格:"+discountedPrice);cart.setDiscountStrategy(new SpecialDiscount());discountedPrice = cart.getPrice(originalPrice);System.out.println("10点价格:"+discountedPrice);
}

输出

8点价格:100.0
9点价格:80.0
10点价格:50.0

策略模式优缺点

优点:

  1. 灵活性高: 策略模式使得算法可以独立地变化,而不会影响到客户端代码。可以随时切换或扩展算法,而无需修改客户端。
  2. 可维护性好: 每个具体策略类都具备清晰的职责,使得代码更加模块化和可读。新增或修改算法时,只需修改相应的策略类,不影响其他部分
  3. 遵循开闭原则: 策略模式支持开闭原则,可以在不修改已有代码的情况下添加新的策略类
  4. 消除条件判断: 策略模式可以避免大量的条件判断,将不同的行为封装到不同的策略类中,使得代码更加简洁
  5. 可测试性强: 每个策略类都是相对独立的,易于进行单元测试。

缺点:

  1. 类数量增多: 策略模式会引入多个具体策略类,可能导致类的数量增多,增加了代码的复杂度。
  2. 客户端需要了解策略: 客户端需要了解不同的策略类,并选择适当的策略,这可能在某些情况下增加了客户端的复杂度
  3. 增加对象数量: 每个策略类都是一个对象,可能会增加系统的对象数量。在某些情况下,可以通过共享策略对象来缓解这个问题
  4. 上下文类复杂: 上下文类需要持有一个策略对象,并在运行时选择合适的策略。在某些情况下,可能会使上下文类变得复杂
http://www.shuangfujiaoyu.com/news/24539.html

相关文章:

  • 舆情监控都有哪些内容淘宝客seo推广教程
  • 自己做的网站怎么放视频个人介绍网页制作
  • 网页设计与制作图片素材百度seo在哪里
  • wordpress免费相册seo是什么意思网络用语
  • 百度站长平台快速收录怎么弄seo优化软件免费
  • 网站开发发展方向站长之家域名解析
  • 江苏省建设部官方网站智推教育seo课程
  • 武汉网站建设公司厂家地址泉州关键词排名工具
  • 用java做网站模板旅游新闻热点
  • 有想做企业网站建设第三方平台推广
  • 旅游网站开发功能长沙网站优化推广
  • 商城类网站建设凡科建站小程序
  • Wordpress托管 点点营销型网站优化
  • 看动漫是怎么做视频网站网站搜索排名优化怎么做
  • 搜索网页怎么制作合肥网站推广优化
  • 全国知名网站建设短链接在线生成
  • 温州网站关键词天津seo实战培训
  • 江苏 建设 招标有限公司网站梅州网络推广
  • 清流县建设局网站下载百度app最新版
  • 买域名送网站广告优化师怎么学
  • 德阳网站建设网站建设兰州seo新站优化招商
  • 做www网站需要多少钱武汉seo工作室
  • 公司品牌官网建站百度一下就知道官网
  • 昆山市做网站百度关键词推广帝搜软件
  • 做海报找背景图有哪些网站恶意点击软件哪个好
  • .net flash网站模板河南自助建站seo公司
  • 大连招标采购网seo网站排名优化案例
  • 哪里做网站比较稳定深圳全网营销平台排名
  • 网站在线留言青岛seo关键字排名
  • 做的网站 为什么百度搜不到接外贸订单的渠道平台哪个好