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

福州模板做网站网页和站点的区别

福州模板做网站,网页和站点的区别,上海高玩seo,沈阳网站建设方案外包提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 学习的最大理由是想摆脱平庸#xff0c;早一天就多一份人生的精彩#xff1b;迟一天就多一天平庸的困扰。各位小伙伴#xff0c;如果您#xff1a; 想系统/深入学习某… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 学习的最大理由是想摆脱平庸早一天就多一份人生的精彩迟一天就多一天平庸的困扰。各位小伙伴如果您 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持想组团高效学习… 想写博客但无从下手急需写作干货注入能量… 热爱写作愿意让自己成为更好的人… 文章目录 前言一、概述二、结构三、案例实现四、优缺点五、使用场景六、JDK源码解析总结 前言 一、概述 二、结构 三、案例实现 四、优缺点 五、使用场景 六、JDK源码解析 一、概述 先看下面的图片我们去旅游选择出行模式有很多种可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿开发需要选择一款开发工具当然可以进行代码开发的工具有很多可以选择Idea进行开发也可以使用eclipse进行开发也可以使用其他的一些开发工具。 定义 ​ 该模式定义了一系列算法并将每个算法封装起来使它们可以相互替换且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式它通过对算法进行封装把使用算法的责任和算法的实现分割开来并委派给不同的对象对这些算法进行管理。 二、结构 策略模式的主要角色如下 抽象策略Strategy类这是一个抽象角色通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略Concrete Strategy类实现了抽象策略定义的接口提供具体的算法实现或行为。环境Context类持有一个策略类的引用最终给客户端调用。 三、案例实现 【例】促销活动 一家百货公司在定年度的促销活动。针对不同的节日春节、中秋节、圣诞节推出不同的促销活动由促销员将促销活动展示给客户。类图如下 代码如下 定义百货公司所有促销活动的共同接口 //抽象策略类 public interface Strategy {void show(); }定义具体策略角色Concrete Strategy每个节日具体的促销活动 //为春节准备的促销活动A public class StrategyA implements Strategy {public void show() {System.out.println(买一送一);} }//为中秋准备的促销活动B public class StrategyB implements Strategy {public void show() {System.out.println(满200元减50元);} }//为圣诞准备的促销活动C public class StrategyC implements Strategy {public void show() {System.out.println(满1000元加一元换购任意200元以下商品);} }定义环境角色Context用于连接上下文即把促销活动推销给客户这里可以理解为销售员 //促销员【环境类】聚合策略类 public class SalesMan {//持有抽象策略角色的引用聚合策略类对象private Strategy strategy; public SalesMan(Strategy strategy) { this.strategy strategy; } //向客户展示促销活动 public void salesManShow(){ strategy.show(); } } Client 类 public class Client {public static void main(String[] args) {//春节来了使用春节促销活动SalesMan salesMannew SalesMan(new StrategyA());//展示促销活动salesMan.salesManShow();System.out.println();//中秋节到了SalesMan salesMan1new SalesMan(new StrategyB());salesMan1.salesManShow();System.out.println();//圣诞节到了SalesMan salesMan2new SalesMan(new StrategyC());salesMan2.salesManShow();} }四、优缺点 1优点 策略类之间可以自由切换 由于策略类都实现同一个接口所以使它们之间可以自由切换。 易于扩展 增加一个新的策略只需要添加一个具体的策略类即可基本不需要改变原有的代码符合“开闭原则“ 避免使用多重条件选择语句if else充分体现面向对象设计思想。 2缺点 客户端必须知道所有的策略类并自行决定使用哪一个策略类。策略模式将造成产生很多策略类可以通过使用享元模式在一定程度上减少对象的数量。 五、使用场景 一个系统需要动态地在几种算法中选择一种时可将每个算法封装到策略类中。一个类定义了多种行为并且这些行为在这个类的操作中以多个条件语句的形式出现可将每个条件分支移入它们各自的策略类中以代替这些条件语句。系统中各算法彼此完全独立且要求对客户隐藏具体算法的实现细节时。系统要求使用算法的客户不应该知道其操作的数据时可使用策略模式来隐藏与算法相关的数据结构。多个类只区别在表现行为不同可以使用策略模式在运行时动态选择具体要执行的行为。 六、JDK源码解析 Comparator 中的策略模式。在Arrays类中有一个 sort() 方法如下 public class Arrays{public static T void sort(T[] a, Comparator? super T c) {if (c null) {sort(a);} else {if (LegacyMergeSort.userRequested)legacyMergeSort(a, c);elseTimSort.sort(a, 0, a.length, c, null, 0, 0);}} }Arrays就是一个环境角色类这个sort方法可以传一个新策略让Arrays根据这个策略来进行排序。就比如下面的测试类。 public class demo {public static void main(String[] args) {Integer[] data {12, 2, 3, 2, 4, 5, 1};// 实现降序排序Arrays.sort(data, new ComparatorInteger() {public int compare(Integer o1, Integer o2) {return o2 - o1;}});System.out.println(Arrays.toString(data)); //[12, 5, 4, 3, 2, 2, 1]} }这里我们在调用Arrays的sort方法时第二个参数传递的是Comparator接口的子实现类对象。所以Comparator充当的是抽象策略角色而具体的子实现类充当的是具体策略角色。环境角色类Arrays应该持有抽象策略的引用来调用。那么Arrays类的sort方法到底有没有使用Comparator子实现类中的 compare() 方法吗让我们继续查看TimSort类的 sort() 方法代码如下 class TimSortT {static T void sort(T[] a, int lo, int hi, Comparator? super T c,T[] work, int workBase, int workLen) {assert c ! null a ! null lo 0 lo hi hi a.length;int nRemaining hi - lo;if (nRemaining 2)return; // Arrays of size 0 and 1 are always sorted// If array is small, do a mini-TimSort with no mergesif (nRemaining MIN_MERGE) {int initRunLen countRunAndMakeAscending(a, lo, hi, c);binarySort(a, lo, hi, lo initRunLen, c);return;}...} private static T int countRunAndMakeAscending(T[] a, int lo, int hi,Comparator? super T c) {assert lo hi;int runHi lo 1;if (runHi hi)return 1;// Find end of run, and reverse range if descendingif (c.compare(a[runHi], a[lo]) 0) { // Descendingwhile (runHi hi c.compare(a[runHi], a[runHi - 1]) 0)runHi;reverseRange(a, lo, runHi);} else { // Ascendingwhile (runHi hi c.compare(a[runHi], a[runHi - 1]) 0)runHi;}return runHi - lo;} }上面的代码中最终会跑到 countRunAndMakeAscending() 这个方法中。我们可以看见只用了compare方法所以在调用Arrays.sort方法只传具体compare重写方法的类对象就行这也是Comparator接口中必须要子类实现的一个方法。 总结 以上就是设计模式之策略模式【行为型模式】的相关知识点希望对你有所帮助。 积跬步以至千里积怠惰以至深渊。时代在这跟着你一起努力哦
http://www.hkea.cn/news/14321716/

相关文章:

  • 帝国网站开发wordpress标签并集显示
  • 陕西省建设厅网站官网企业月报手表网站错误怎么办
  • 用股票代码做网站的微信建设网站
  • 网站注册怎么做重庆高端设计公司
  • 精品购物网站无锡建设公司网站
  • 新做的网站如何套餐型网站建设合同
  • asp.net mvc 5 网站开发之美仿唧唧帝笑话门户网站源码带多条采集规则 织梦搞笑图片视频模板
  • 网站后台打开很慢wordpress伪静态404 nginx
  • 丹东网站建设公司鹤壁建设企业网站公司
  • 建设网站用户名是什么如何查询网站主机信息
  • 网易官网建立个人网站商标自动生成免费软件
  • 网站都要icp备案吗微信公众号手机网站开发
  • 工程建设标准化网站旅游网站页面设计
  • 一个网站如何优化做京东网站需要哪些手续
  • 网站建设项目实训重庆网站网页设计培训机构
  • 社交网站的优点和缺点企业做网站排名
  • 河北住房和城乡建设厅网站首页女装关键词排名
  • 手机微网站 模板海南省建设执业资格管理中心网站
  • 郑州一建济南网站自然优化
  • 网站页面架构怎么写湖北德升建站
  • 济南手机网站建设无锡网站建设课程
  • h5网站开发培训机构泰安企业建站公司哪里找
  • 帮别人做ppt赚钱的网站网站开发与应用专业
  • 网站推广的方法有sem推广怎么建自己的公众号
  • 域名查询权威网站做销售找客户渠道
  • 建设专业网站所需设备ninety wordpress插件
  • 专业网站设计公司哪家好国外做农产品有名的网站
  • 白糖贸易怎么做网站学校网站建设成功
  • 网站建设开发心得公司网站空间要多大
  • 哪些网站做品牌折扣的登录浙江省建设信息港