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

英语网站建设新闻发布的网站

英语网站建设,新闻发布的网站,十堰秦楚网手机版下载,银川住房城乡建设委官方网站一、概念 就是将一系列算法封装起来,并使它们之间相互替换。被封装起来的算法具有独立性外部不可改变其特性。 策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算…

一、概念

就是将一系列算法封装起来,并使它们之间相互替换。被封装起来的算法具有独立性外部不可改变其特性。
策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

二、应用场景

业务代码需要根据场景不同,切换不同的实现逻辑
代码中存在大量 if else 逻辑判断

三、结构

抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口,所有具体的策略类都要实现这个接口。环境(上下文)类Context 使用这个接口调用具体的策略类。
具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
环境(Context)类:用于配置一个具体的算法策略对象 ,维持一个策略接口类型的引用( Reference ),并且可以定义一个让接口 Strategy 的具体对象访问的接口。在简单情况下,Context 类可以省略。

四、示例

在这里插入图片描述

  1. 传统的实现方式:
    public Double calculationPrice(String type, Double originalPrice, int n) {//中级会员计费if (type.equals("intermediateMember")) {return originalPrice * n - originalPrice * 0.1;}//高级会员计费if (type.equals("advancePrimaryMember")) {return originalPrice * n - originalPrice * 0.2;}//普通会员计费return originalPrice;}

传统的实现方式,通过传统if代码判断。这样就会导致后期的维护性非常差。当后期需要新增计费方式,还需要在这里再加上if(),也不符合设计模式的开闭原则。

  1. 策略模式实现方式:

抽象类策略:

package StrategyExercise;public interface MemberStrategy {// 一个计算价格的抽象方法//price商品的价格 n商品的个数public double calcPrice(double price, int n);
}
**具体实现类:**
// 普通会员——不打折
public class PrimaryMemberStrategy implements MemberStrategy { // 实现策略//重写策略方法具体实现功能@Overridepublic double calcPrice(double price, int n) {return price * n;}
}
package StrategyExercise;// 中级会员 打百分之10的折扣
public class IntermediateMemberStrategy implements MemberStrategy{@Overridepublic double calcPrice(double price, int n) {double money = (price * n) - price * n * 0.1;return money;}
}package StrategyExercise;// 高级会员类 20%折扣
public class AdvanceMemberStrategy implements MemberStrategy{@Overridepublic double calcPrice(double price, int n) {double money = price * n - price * n * 0.2;return money;}
}

上下文类(也叫做上下文类或环境类,起承上启下封装作用。)

package StrategyExercise;/*** 负责和具体的策略类交互* 这样的话,具体的算法和直接的客户端调用分离了,使得算法可以独立于客户端独立的变化。*/// 上下文类/环境类
public class MemberContext {// 用户折扣策略接口private MemberStrategy memberStrategy;// 注入构造方法public MemberContext(MemberStrategy memberStrategy) {this.memberStrategy = memberStrategy;}// 计算价格public double qoutePrice(double goodsPrice, int n){// 通过接口变量调用对应的具体策略return memberStrategy.calcPrice(goodsPrice, n);}
}

测试类

package StrategyExercise;// 测试类
public class Application {public static void main(String[] args) {// 具体行为策略MemberStrategy primaryMemberStrategy = new PrimaryMemberStrategy(); // 接口回调(向上转型)MemberStrategy intermediateMemberStrategy = new IntermediateMemberStrategy();MemberStrategy advanceMemberStrategy = new AdvanceMemberStrategy();// 用户选择不同策略MemberContext primaryContext = new MemberContext(primaryMemberStrategy);MemberContext intermediateContext = new MemberContext(intermediateMemberStrategy);MemberContext advanceContext = new MemberContext(advanceMemberStrategy);//计算一本300块钱的书System.out.println("普通会员的价格:"+ primaryContext.qoutePrice(300,1));// 普通会员:300System.out.println("中级会员的价格:"+ intermediateContext.qoutePrice(300,1));// 中级会员 270System.out.println("高级会员的价格:"+ advanceContext.qoutePrice(300,1));// 高级会员240}
}

测试结果

普通会员的价格:300.0
中级会员的价格:270.0
高级会员的价格:240.0

上述案例UML类图
在这里插入图片描述

五、优缺点

1、优点

  • 策略模式提供了对“开闭原则”的完美支持,用户可以在不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或行为。
  • 策略模式提供了管理相关的算法族的办法。
  • 策略模式提供了可以替换继承关系的办法。
  • 使用策略模式可以避免使用多重条件转移语句。

2、缺点

  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道算法或行为的情况。
  • 策略模式将造成产生很多策略类,可以通过使用享元模式在一定程度上减少对象的数量。
http://www.hengruixuexiao.com/news/29730.html

相关文章:

  • 用网站做自我介绍自己定制营销型网站建设
  • 专注江苏网站建设外链网站是什么
  • 宁波网站制作服务it培训机构排行榜
  • 茶叶网站建设费用明细日本和韩国是亚洲的国家
  • 虎门做英文网站企业网站制作
  • 建行官方网站多少钱谷歌搜索为什么用不了
  • 高端网站制作哪家好百度seo关键词优化软件
  • 网站app推广怎么做广告联盟平台自动赚钱
  • 深圳拼团网站建设小程序推广50个方法
  • python django 做 网站seo优化教程下载
  • 网站开发任务概述色盲悖论
  • 罗湖附近公司做网站建设多少钱企点客服
  • 商业类网站的设计与制作在百度怎么发布作品
  • 怎么看国外设计网站百度平台营销
  • 广州手机网站建设费用国外免费舆情网站有哪些软件
  • dede网站栏目管理如何建设做公司网站
  • 西宁站 网站seo技术平台
  • 手机企业网站如何建设百度竞价点击工具
  • 余姚市建设局网站推广业务
  • 内蒙做网站官方进一步优化
  • 大良营销网站建设策划互联网怎么赚钱
  • 网站开发需要注意什么企业培训内容包括哪些内容
  • 创建网站得花多少钱营销计划怎么写
  • 代做视频的网站好平台推广销售话术
  • 本网站建设中怎么推广产品最有效
  • 58怎么做自己的网站什么是软文文案
  • 网站制作北京海淀网站结构优化的内容和方法
  • 网站建设公司 - 百度如何进行网络推广营销
  • 网站轮播图片psd源码一份完整app运营推广方案
  • 开购物网站需要多少钱优化20条措施