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

铜陵网站建设关于网站的制作

铜陵网站建设,关于网站的制作,手机版传奇发布网站,python网站开发演示一、概念 就是将一系列算法封装起来#xff0c;并使它们之间相互替换。被封装起来的算法具有独立性外部不可改变其特性。 策略模式属于对象行为模式#xff0c;它通过对算法进行封装#xff0c;把使用算法的责任和算法的实现分割开来#xff0c;并委派给不同的对象对这些算…一、概念 就是将一系列算法封装起来并使它们之间相互替换。被封装起来的算法具有独立性外部不可改变其特性。 策略模式属于对象行为模式它通过对算法进行封装把使用算法的责任和算法的实现分割开来并委派给不同的对象对这些算法进行管理。 二、应用场景 业务代码需要根据场景不同切换不同的实现逻辑 代码中存在大量 if else 逻辑判断 三、结构 抽象策略Strategy类这是一个抽象角色通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口所有具体的策略类都要实现这个接口。环境上下文类Context 使用这个接口调用具体的策略类。 具体策略Concrete Strategy类实现了抽象策略定义的接口提供具体的算法实现或行为。 环境Context类用于配置一个具体的算法策略对象 维持一个策略接口类型的引用 Reference ),并且可以定义一个让接口 Strategy 的具体对象访问的接口。在简单情况下Context 类可以省略。 四、示例 传统的实现方式 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(),也不符合设计模式的开闭原则。 策略模式实现方式 抽象类策略 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.dnsts.com.cn/news/192372.html

相关文章:

  • 表白网站在线制作软件徐州建站网页建设
  • 江西核工业建设有限公司网站优质的seo快速排名优化
  • 益阳高端网站建设南京营销型网站建设
  • 网络营销研究现状文献综述seo推广优化收费
  • 网站开发时间利用影视网站做cpa
  • 网站界面需求百度网页制作网站建设
  • 建网站金坛哪家强?简单动画制作
  • 石家庄站布局图wordpress国外模板下载
  • 嘉兴 做网站 推广直播网站建设模板
  • 苏州市建设中心网站首页wordpress 按钮样式
  • 保定网站建设制作服务信息网络安全
  • 珠海市横琴新区建设环保局网站永久免费crm都有什么
  • 济南正规网站制作怎么选择自媒体策划哪里公司最好
  • 圣辉友联北京网站建设公司三网合一网站开源
  • 深圳创建网站我国外贸企业网站建设
  • 德阳建设局官方网站个人网站建设技术
  • 利川网站建设网站设计稿
  • 东莞网站建设流程图企业网站内容策划
  • 哪个网站是专做宝宝饭的php asp网站开发
  • 网站建设的后期维护问题线上推广媒体广告
  • 通用网址通用网站查询郑州做网站需要多少钱
  • 网站制作进度表做网站公司如何选
  • 烟台网站建设科技公司东莞网络推广培训班
  • 网站建设包含图文设计昆山人才网官网
  • 忘记wordpress的账号和密码忘记seo培训中心
  • 在工商网站上怎么做电话的变更建立自己的网站用花钱吗
  • 无锡网站建站公司站长工具域名
  • 网站域名自动跳转用模板做企业网站
  • 网站建设饣首选金手指小网站推广
  • 各国网站的域名wordpress删除版权