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

外贸网站建站平台网站域名商代理商

外贸网站建站平台,网站域名商代理商,自建网站服务器,做网站用php还是html好title: 浅析Java设计模式之四策略模式 date: 2018-12-29 17:26:17 categories: 设计模式 description: 浅析Java设计模式之四策略模式 1. 目录 1. 目录2. 概念 2.1. 应用场景2.2. 优缺点 2.2.1. 优点2.2.2. 缺点 3. 模式结构4. 样例 4.1. 定义策略4.2. 定义具体策略4.3. 定义… title: 浅析Java设计模式之四策略模式 date: 2018-12-29 17:26:17 categories: 设计模式 description: 浅析Java设计模式之四策略模式 1. 目录 1. 目录2. 概念 2.1. 应用场景2.2. 优缺点 2.2.1. 优点2.2.2. 缺点 3. 模式结构4. 样例 4.1. 定义策略4.2. 定义具体策略4.3. 定义上下文4.4. 实现效果 5. 拓展 2. 概念 策略模式是我们 Java 开发中最最基础的开发模式我们在日常生活中都可以找到与之相关。现实中我们各种为实现某种目标而选择的具体某种行为都可以归纳为之策略。 我们选择去旅行对于交通工具的选择上我们有飞机、客车、高铁、自驾等做种选择每一种选择都代表一种策略都为了我们去旅行这个目标而服务。 而在软件开发中我们也常遇到类似的情况当为实现某一个功能存在多种算法或者策略我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能如数据排序策略有冒泡排序、选择排序、插入排序、二叉树排序等。 所以这里给策略 Strategy 模式下个定义模式定义一系列算法并将每个算法封装起来使它们可以相互替换且算法的变化不会影响使用算法的客户。 总之所以在本质上策略的设计模式属于行为型模式一种通过定义的一套算法类进行封装让算法类之间可以相互替换从而达到一种按照调用侧/实现侧去决定目标实现。策略模式可以最大程度的避免代码中 if else 以及 switch 语句。 2.1. 应用场景 在需要多实现场景下但只在算法或行为上略有差异在算法或行为上须自由完成切换需要解脱或者屏蔽多条件判断的场景 2.2. 优缺点 2.2.1. 优点 算法或行为可自由切换避免在实现过程中使用多重条件判断实现结构上具备扩展性良好和可读性 2.2.2. 缺点 策略的基础条件随着业务增长会增多可能存在臃肿不是很安全因为所有的策略条件都对外暴露 3. 模式结构 策略模式 的实现包含三个组成部分分别为 策略类 、 具体策略类 、 上下文 。 Strategy策略类用于定义所有支持算法的公共接口ConcreteStrategy是具体策略类封装了具体的算法或行为继承于 Strategy 。Context是上下文用一个 ConcreteStrategy 来配置维护一个对 Strategy 对象的引用 4. 样例 此处假定我们在商场购物选购的商品为 桌面电脑那么在用户支付的环节对支付的手段可以有多种选择例如 现金 、信用卡、积分 等。那么我们在设计过程中就遵循这种这种实现。 4.1. 定义策略 抽象一个付款方式我们没有指明具体是哪一种付款方式留给实现类去具体说明。 public interface Payment {void payment(); } 4.2. 定义具体策略 现金 public class Cash implements Payment{Overridepublic void payment() {System.out.println(现金付款);} } 信用卡 public class Credit implements Payment{Overridepublic void payment() {System.out.println(信用卡付款);} } 积分 public class Points implements Payment{Overridepublic void payment() {System.out.println(积分付款);} } 4.3. 定义上下文 public class Shopping {private Payment payment;public Shopping(Payment payment) {this.payment payment;}public void buyDesktop(){System.out.println(购买台式机);payment.payment();}} 4.4. 实现效果 DisplayName(策略应用) Test public void testStrategy() {Payment payment new Cash();Shopping shopping new Shopping(payment);shopping.buyDesktop(); } 5. 拓展 在我们上面使用 策略模式 的设计中如果当存在的具体策略很多时策略的客户端在管理所有策略将变得很臃肿且复杂那如果在环境类中使用一个策略工厂模式来管理具体策略类那么将大大减少客户端的工作复杂度。 package io.github.rothschil.design.strategy.factory;import cn.hutool.core.util.ClassUtil; import io.github.rothschil.design.strategy.Payment; import io.github.rothschil.design.strategy.StrategyEnum;import java.util.HashMap; import java.util.Map; import java.util.Set;public class StrategyFactory {private static MapString, Payment PAYMENT_MAP new HashMap();public StrategyFactory() {// 反射出子类SetClass? sets ClassUtil.scanPackageBySuper(io.github.rothschil, Payment.class);for (Class? it : sets) {try {Payment payment (Payment)it.newInstance();PAYMENT_MAP.put(it.getSimpleName(), payment);} catch (InstantiationException | IllegalAccessException ignored) {}}}public Payment get(StrategyEnum keyEnum) {return PAYMENT_MAP.get(keyEnum.getKey());}} 那我们对我们上面的测试类也进行改造下 DisplayName(策略应用)Testpublic void testStrategy2() {StrategyFactory strategyFactory new StrategyFactory();Payment payment strategyFactory.get(StrategyEnum.CASH);Shopping shopping new Shopping(payment);shopping.buyDesktop();}
http://www.zqtcl.cn/news/903862/

相关文章:

  • 龙岗建设高端网站如何建立网站会员系统吗
  • 中国建设银行的网站色彩wordpress 图片采集器
  • 渭南做网站价格江西省城乡住房建设部网站
  • 个人网站可以做充值安徽建设厅网站首页
  • 技术支持 东莞网站建设石材小企业网站建设查询
  • 政务公开网站建设的亮点和建议wordpress注册怎么设置密码
  • 外贸有哪些网站成都网络营销搜索推广优势
  • 国外mod大型网站财税公司
  • 一个很好的个人网站开发做一个简单网页多少钱
  • 东莞在哪里学网站建设网站建设团队与分工
  • 网站功能插件昆明网站建设技术研发中心
  • 网站开发培训中心 市桥移动端ui
  • 高碑店地区网站建设上海排名十大装潢公司
  • 无锡自助建站网站还是新能源专业好
  • pc 手机网站 微站如何建设与维护网站
  • 大学生兼职网站开发毕设论文杭州网络排名优化
  • 做教育机器网站网站建设的步骤图
  • 桔子建站是什么平台郑州公司注册网上核名
  • 网站开发技能有哪些网站建设艾金手指科杰
  • 网站建设挂什么费用网站建设学那些课
  • 网站定位与功能分析在互联网公司做网站
  • 安阳网站建设兼职做网站推广有哪些公司
  • 网站制作的一般过程怎么用手机搭建网站
  • 备案 网站名称 怎么改深圳建网站公司
  • html 企业网站模板网站策划书免费
  • 网站建设销售ppt拖拽建站系统源码
  • 网站托管费用多少网站的开发流程
  • 周到的商城网站建设北京品牌网站
  • 网站开发费用属于什么科目网站建设考试多选题
  • c asp做网站wordpress4.5.2文章采集