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

建设部网站监理工程师查询wordpress菜单栏功能

建设部网站监理工程师查询,wordpress菜单栏功能,唐山有制作网站的没,百度网盘app请直接看原文:设计模式(十一)策略模式_某移动支付系统在实现账户资金转入和转出时需要进行身份验证,该系统为用户提供了-CSDN博客 ----------------------------------------------------------------------------------------------------------------…

请直接看原文:
设计模式(十一)策略模式_某移动支付系统在实现账户资金转入和转出时需要进行身份验证,该系统为用户提供了-CSDN博客

-------------------------------------------------------------------------------------------------------------------------------- 

前言

当我们写代码时总会遇到一种情况就是我们会有很多的选择,由此衍生出很多的if…else,或者case。如果每个条件语句中包含了一个简单的逻辑,那还比较容易处理,如果在一个条件语句中又包含了多个条件语句就会使得代码变得臃肿,维护的成本也会加大,这显然违背了开放封闭原则。这一讲我们就来讲策略模式,来看看它是怎么解决如上所说的问题的。

1.策略模式简介
策略模式定义

定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。策略模式模式使得算法可独立于使用它的客户而独立变化。

策略模式UML图

这里写图片描述

  • Context:用来操作策略的上下文环境。
  • Stragety:策略的抽象。
  • ConcreteStragetyA、ConcreteStragetyB:具体的策略实现。
2.策略模式简单实现

这回我们还举武侠的例子,张无忌作为一个大侠会遇到很多的对手,如果每遇到一个对手都用自己最厉害的武功去应战这显然是不明智的,于是张无忌想出了三种应战的策略分别对付三个实力层次的对手。

定义策略接口

策略接口有一个fighting的方法用于战斗:

public interface FightingStrategy {public void fighting();
}
具体策略实现

分别定义三个策略来实现策略接口,用来对付三个实力层次的对手:

public class WeakRivalStrategy implements FightingStrategy {@Overridepublic void fighting() {System.out.println("遇到了较弱的对手,张无忌使用太极剑");}
}
public class CommonRivalStrategy implements FightingStrategy {@Overridepublic void fighting() {System.out.println("遇到了普通的对手,张无忌使用圣火令神功");}
}
public class StrongRivalStrategy implements FightingStrategy {@Overridepublic void fighting() {System.out.println("遇到了强大的对手,张无忌使用乾坤大挪移");}
}
实现环境类

环境类的构造函数包含了策略类,通过传进来不同的具体策略来调用不同策略的fighting方法:

public class Context {private FightingStrategy fightingStrategy;public Context(FightingStrategy fightingStrategy) {this.fightingStrategy = fightingStrategy;}public void fighting(){fightingStrategy.fighting();}
}
客户端调用

张无忌遇到了三个对手:宋青书、灭绝师太和成昆,他分别采用了不同的策略来应战:

public class ZhangWuJi {public static void main(String[] args) {Context context;//张无忌遇到对手宋青书,采用对弱的对手的策略context = new Context(new WeakRivalStrategy());context.fighting();//张无忌遇到对手灭绝师太,采用对普通的对手的策略context = new Context(new CommonRivalStrategy());context.fighting();//张无忌遇到对手成昆,采用对强劲的对手的策略context = new Context(new StrongRivalStrategy());context.fighting();}
}

3.策略模式优缺点和使用场景
优点
  • 策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码。
  • 使用策略模式可以避免使用多重条件转移语句。多重转移语句不易维护,它把采取哪一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重转移语句里面,比使用继承的办法还要原始和落后。
缺点
  • 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。
  • 策略模式造成很多的策略类,每个具体策略类都会产生一个新类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,可以使用享元模式来减少对象的数量。
使用场景
  • 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。
  • 针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。
  • 一个类定义了很多行为,而且这些行为在这个类里的操作以多个条件语句的形式出现。策略模式将相关的条件分支移入它们各自的 Strategy 类中以代替这些条件语句。
http://www.yayakq.cn/news/296876/

相关文章:

  • 做素材网站存储相同网站名
  • 东莞网站制作百年上海劳务市场招聘信息查询
  • 学建网站要多久房子网站有哪些
  • 网站开发合同官司seo技巧是什么
  • 比较好的网页设计网站开源php源码
  • 珠海市手机网站建设品牌免费的游戏网站建设
  • html5素材网站旅游网页模板下载
  • 摄影网站排行电子商务网站建设实训体会
  • 天津百度搜索网站排名永久免费的crm软件系统
  • 秦皇岛找一家能建网站的公司类模板模板下载网站有哪些内容
  • 网站建设平台 汉龙wordpress手机端图片不显示图片
  • 网站程序免费下载十大免费行情软件视频
  • 网站页面制作企业管理软件a6
  • 3g版和wap网站什么事网站建设
  • 做域名交易网站网站怎么做让PC和手机自动识别
  • 哈尔滨微网站建设公司WordPress登录提醒
  • 恐怖音乐怎么做的视频网站网站开发代码用什么软件
  • 建立网站费用大概需要多少钱59网站一起做网店普宁
  • 无锡网站建设价格最优自定义字段wordpress
  • 南京 郑州网站建设公司 网络服务淘宝u站怎么做网站的
  • 购物网站名字大全域名请记住222922
  • 网站项目建设计划免费客户管理软件排行
  • 可以做申论的网站短信平台
  • 做网站一定要用到dw软件园专业做网站
  • 做摄影网站的公司优秀交互设计app欣赏
  • 都兰县建设局交通局网站大型餐饮网站建设
  • 做网站如何购买服务器吗制作网页的步骤搜集素材
  • 广州网站建设o2o微信小程序开发教程官方文档
  • 义乌本地网站开发网站设计师要求
  • 星月教你做网站企业做网站找谁