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

网站asp.net安装wordpress发帖软件

网站asp.net安装,wordpress发帖软件,更新wordpress主机名,济南小程序制作公司策略模式概述 策略模式#xff0c;即与解决问题的策略有关的模式#xff0c;该模式旨在更好的实现策略的实现。策略模式分为三个部分#xff1a;环境、抽象策略角色、具体策略角色。策略模式能使得更好地管理和使用一类算法。 环境#xff08;context#xff09;#xf…策略模式概述 策略模式即与解决问题的策略有关的模式该模式旨在更好的实现策略的实现。策略模式分为三个部分环境、抽象策略角色、具体策略角色。策略模式能使得更好地管理和使用一类算法。 环境context用于确定对应的具体策略角色。并将解决策略的功能最终放在环境context中只要向下调用功能即可。抽象策略角色能完成一种问题的解决的各种算法的范称通常为接口定义能解决问题的功能但是不实现具体的算法的步骤由实现类解决。具体策略角色实现抽象策略角色要完成具体的解决问题的功能的角色。 代码实现举例 如果一家商场能让顾客办会员卡以达到优惠的目的而会员卡分为两种八折卡、满减卡没满三百减五十。要求输入原价格和优惠方式得到优惠后的价格。 分析这里的抽象策略角色应该为优惠方式而具体策略角色有三个八折、满减、普通而环境通常用context表示用于确定对应具体的优惠方式 抽象策略角色优惠方式 /*** 表示优惠的算法具体优惠方式由实现类定义*/ public interface Concession {//计算优惠后的价格的功能Double doConcession(Double price); } 具体策略角色优惠方式的不同具体实现 普通 /*** 没有优惠卡的计算方法*/ public class NormalConcession implements Concession {Overridepublic Double doConcession(Double price) {return price;} } 八折卡 /*** 有八折卡的计算方法*/ public class RebateConcession implements Concession {Overridepublic Double doConcession(Double price) {return price * 0.8;} } 满减卡 /*** 有满减卡的计算方法每满三百减五十*/ public class ReturnConcession implements Concession {Overridepublic Double doConcession(Double price) {return price - ( (int)(price / 300) * 50 );} } 普通策略模式的环境context /*** 普通策略模式的Context类用于决定不同的算法*/ public class ConcessionContext {private Concession concession;public ConcessionContext(Concession concession){this.concession concession;}public Double doConcession(Double price){return concession.doConcession(price);} } 通过传入不同的具体策略模式的对象来决定其成员变量concession是怎样的策略。并且将策略的功能最终放在环境中业务代码只要调用环境的功能的方法即可。 主要业务代码 public class Main {public static void main(String[] args) throws Exception {Scanner scan new Scanner(System.in);System.out.println(请输入原价格);double price scan.nextDouble();System.out.println(请输入优惠方式);String method scan.next();ConcessionContext context null;switch (method){case 普通:context new ConcessionContext(new NormalConcession());break;case 八折卡:context new ConcessionContext(new RebateConcession());break;case 满减卡:context new ConcessionContext(new ReturnConcession());break;default:context null;break;}if (context null){throw new Exception(方式错误);}Double concession context.doConcession(price);System.out.println(优惠后价格为 concession);} 但是这种方式有一些缺点 具体策略的选择在业务代码中进行当修改底层时比如增加、删除、更新了策略也要修改业务代码业务代码中要实例化各种具体策略对象使得代码繁杂而且个人感觉这样使得环境context有点多余在这种情况下context只是起了一个没有中间作用的类判断完后直接使用具体实现策略的对象调用方法差别也不大 策略模式与简单工厂模式相结合 结合的要点是让环境context起到一个工厂类的效果来完成实例化。并且让context去完成具体实现策略的判断后再作对应我们只要传入要选择的策略的标识即可比如传入目标策略的名字让context根据此名字来实例化对应的策略对象。 升级版的context /*** 策略者模式与简单工厂模式相结合*/ public class ConcessionContextPlus {Concession context null;public ConcessionContextPlus(String method) throws Exception {switch (method){case 普通:context new NormalConcession();break;case 八折卡:context new RebateConcession();break;case 满减卡:context new ReturnConcession();break;default:context null;break;}if (context null) {throw new Exception(方式错误);}}public Double doConcession(Double price){return context.doConcession(price);} } 升级后的业务代码 /*** 升级版业务非常简洁可读性高*/ public class MainPlus {public static void main(String[] args) throws Exception {Scanner scan new Scanner(System.in);System.out.println(请输入原价格);double price scan.nextDouble();System.out.println(请输入优惠方式);String method scan.next();//实际上两步就完成了策略//传入优惠方式ConcessionContextPlus concessionContextPlus new ConcessionContextPlus(method);//传入原价格Double concession concessionContextPlus.doConcession(price);System.out.println(优惠后价格为 concession);} } 升级后的业务代码明显简单了很多。 总结 策略模式能更好地管理和使用一类算法在做算法增删改时无需改动业务代码只要对底层进行修改。使得代码的耦合度低封装性强。策略模式结合简单工厂模式让context起到工厂的作用能让业务代码更为简洁也更易于理解和使用。比起普通的策略模式耦合度更低封装性更强。
http://www.zqtcl.cn/news/862881/

相关文章:

  • 镇江市网站制作网页的代码实例
  • 吉林省网站制作公司有哪些唐山设计网站公司
  • 浙江国泰建设集团有限公司网站ps软件下载电脑版免费怎么下载
  • 昆明网站建设价格自力教育
  • 黄冈网站推广软件视频下载孝感做网站xgsh
  • 用jsp做一网站的流程图互联网博客网站
  • 南宁一站网 给网站做营销微网站和网站同步像素
  • 如何建设一个视频小网站软件做网站
  • 小企业网站建设公司哪家好网站怎样设计网页
  • 那个网站做搬家推广比较好wordpress twenty eleven
  • 微站图片临淄信息网招聘最新信息
  • 投诉举报网站建设方案宠物网站 模板
  • 生小孩去什么网站做登记有特点的个人网站
  • 汉中市住房和城乡建设局网站学网站建设需要什么
  • 深圳网站建设外包公司排名网络引流怎么做啊?
  • 关于做暧暧的网站php 网站授权
  • 网站上添加子栏目wordpress群组
  • 一站式手机网站制作有没有代做ppt的网站
  • 西安火车站网站建设网站的设计需要什么
  • 弹幕网站开发代码欧洲人喜欢什么样的服务器
  • 有哪些做壁纸的网站好ftp如何备份网站
  • 网站如何推广出去wordpress foopen
  • 网站空格键代码台州椒江网站建设公司
  • node 网站开发 视频教程汉阳网站推广
  • 广西新农村建设工作专题网站怎样创建公司网站
  • 中国十大招商平台谷歌优化软件
  • 做任务领黄钻的网站中国采购网招标公告
  • 网站建设三层架构实训报告德阳市网站建设
  • 有免费建网站opencms wordpress
  • 行业网站做的好的wordpress要有数据库