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

百度云主机上装网站flash怎么做网页

百度云主机上装网站,flash怎么做网页,wordpress 显示文章分类,郑州排名前十的科技公司Hello!~大家好啊,很高兴我们又见面了,今天我们一起学习设计模式–【策略模式】 初次对此模式不懂的,或者想偷懒的,我强烈建议大家跟着我的一起把概念和代码一起敲一遍!~为啥子??因为我就是这样学会的,哈哈哈! 1.首先我们看下此模式的整体UML图 selector:选择器又叫做上下文co… Hello!~大家好啊,很高兴我们又见面了,今天我们一起学习设计模式–【策略模式】 初次对此模式不懂的,或者想偷懒的,我强烈建议大家跟着我的一起把概念和代码一起敲一遍!~为啥子??因为我就是这样学会的,哈哈哈! 1.首先我们看下此模式的整体UML图 selector:选择器又叫做上下文context,【作用】通过不同的标识从而获取对应的策略实例(这是很关键的一个点,你细品~) 抽象策略: 如图所示,这是策略模式的顶层接口【就相当于领导~干运筹帷幄的】 策略实例 n:封装不同算法业务的实例对象,【就是特么真正干活的~!比如俺们码农】 2.案例实现 我们一个实际的案例进行实操,掌握这看起来高大上的策略模式,也是后面若你要面试,也能吹牛逼啊~ 案例: 比如我们要统计餐厅的人流量数据做统计,统计的时间维度:一周和一个月,我们用策略模式咋实现呢? 我们往下看 实现需求分析: 前置设计: 我们定义常量标识策略的类型,使用者调用时可通过常量获取对应的策略实例 策略设计 策略实例: 创建两个Bean实例: 周维度 月维度,并实现其中对应的算法和业务抽象策略:通常我们定义一个通用的接口或者抽象方法,为啥???为了让外部能够访问啊!否则不是闭关锁国了嘛!~~ 选择器设计: 这块就是挺重要的啦,我们通常采用MAP来存储数据,这样调用者就可以通过策略标识获取对应的策略实例 注意: 对于第三点可以是一道面试题:请问你怎么将策略的Bean注入到MAP中的?(不看答案,别心里好家伙,思考思考~哈哈) 也许你的第一反应: 我就直接将Bean对应的Class写死在MAP中,然后通过applicationContext.getBaen()获取其实例,这是最简单粗暴的!(也一看就是**菜鸡写法**哈哈哈) 若是这样回答,面试官肯定会问,这个通过写死的方法,那么下次我想增加其他维度的那不是要再次往Map中再添加,这麻烦先不说,也不符合开闭原则啊!~ 你尴尬的扣了扣脚,微笑回答到: 是的,这是我一开始使用的,当时业务量不大,只考虑上面的两种情况,我就直接使用采取这种直接写死法, 但后面随着业务线的拓展,我也发现此中写法的弊端: 我的改进措施:(在Springboot的环境中) 1.通过解析注解来实现,给每个策略实例打上一个注解,我们业务是以周和月为维度进行常量标识的 2.过程: 在Springboot启动时,通过扩展点扫描抽象策略,获取它的策略实例 3.然后解析注解,放入MAP中 这种就不用对原先代码就行逻辑代码改动,既符合开闭原则,又回到了面试官,爽哉!~ 说了这么多,那关于代码我们怎么实现呢?–耐心点,我们一起往下看 代码实现 1.抽象策略 package org.boyunv.strategy_pattern.handler;/*** p* 描述 抽象策略 br* p* 需求信息 【需求ID与需求标题】【客户名称】 br** author aristo* date 2024/1/23 19:07*/ public interface TimeDimensionBaseHandlerInterface {//此方法是留给不同策略实体实现不同策略的方法实现void statistic(); } 2.【策略实体】 这里我们注册组件直接采用Spring框架的组件Component进行注册即可 1.周统计维度 package org.boyunv.strategy_pattern.handler;import org.springframework.stereotype.Component;/*** p* 描述 策略实体: 周统计维度$ br* p* 需求信息 【需求ID与需求标题】【客户名称】 br** author aristo* date 2024/1/23 19:12*/ Component(week) public class StatisticByWeekHandler implements TimeDimensionBaseHandlerInterface{Overridepublic void statistic() {//具体实现System.out.println(通过周统计维度实现统计数据);} } 2.月统计维度 package org.boyunv.strategy_pattern.handler;import org.springframework.stereotype.Component;/*** p* 描述 策略实体: 月统计维度$ br* p* 需求信息 【需求ID与需求标题】【客户名称】 br** author aristo* date 2024/1/23 19:12*/ Component(month) public class StatisticByMonthHandler implements TimeDimensionBaseHandlerInterface{Overridepublic void statistic() {System.out.println(通过月统计维度实现统计数据);} } 3.选择器【Inevitable!】 看如下的代码,我们会发现他同样是个组件,Component Resource:将我们注册的week和month组件注册进入MAP中 package org.boyunv.strategy_pattern.selector;import org.boyunv.strategy_pattern.handler.TimeDimensionBaseHandlerInterface; import org.springframework.stereotype.Component;import javax.annotation.Resource; import java.util.Map;/*** 描述 选择器,核心重点$ br* 需求信息 【需求ID与需求标题】【客户名称】 br* date 2024/1/23 19:26*/ Component public class StatisticSelector {//这就和我们上面的所说的:定义Map,并通过Resource注解完成我们刚才week和month的组件注入(很关键的一步哦!~)Resourceprivate MapString, TimeDimensionBaseHandlerInterface selectorMap;//下面根据类型选择策略public TimeDimensionBaseHandlerInterface select(String type){return selectorMap.get(type);} } 4.我们进行测试 package org.boyunv.strategy_pattern.selector;import org.boyunv.strategy_pattern.handler.TimeDimensionBaseHandlerInterface; import org.junit.Test; import org.springframework.stereotype.Component;import javax.annotation.Resource; import java.util.Map;/*** 描述 选择器,核心重点$ br* 需求信息 【需求ID与需求标题】【客户名称】 br* date 2024/1/23 19:26*/ Component public class StatisticSelector {//这就和我们上面的所说的:定义Map,并通过Resource注解完成我们刚才week和month的组件注入(很关键的一步哦!~)Resourceprivate MapString, TimeDimensionBaseHandlerInterface selectorMap;//下面根据类型选择策略public TimeDimensionBaseHandlerInterface select(String type){return selectorMap.get(type);}public void doInvoke(String type){TimeDimensionBaseHandlerInterface handlerselect(type);handler.doStatistic();}Testpublic void invoke(){this.doInvoke(week);this.doInvoke(month);} } 完结: 通过上面的运行步骤,我们最中实现策略模式的周和月的策略实现 这里面的核心点,再次提醒下: 通过Spring获取接口的实现并解析实现类上的注解的方式可以在程序启动时动态的将策略注入到一个Map中作为策略的容器。 使用时传入标识符(就是常量)就可以获取到对应的策略执行了。
http://www.zqtcl.cn/news/118478/

相关文章:

  • 外贸网站能用阿里云吗哔哩哔哩网页版打不开
  • 南宁月嫂网站建设财经直播的网站开发一个多少钱
  • 宁波网站的建设百度网盟推广 网站
  • 大连城乡建设局网站青岛网站建设外贸
  • 石家庄网站建设招聘珠海快速网站建设
  • 网站建设代理ai制作网页
  • 微网站平台怎样做网站wordpress侧栏跟随
  • 手机网站建设好吗湖南省专业建设公司网站的机构
  • 网站代码 字体好用的cms网站
  • 美食网站首页设计用手机怎么看自己做的网站
  • 平台类网站开发怎样做永久网站二维码
  • 网站开发客户挖掘php网站开发心得3500字
  • 检察院做网站的目的青岛网站推广优化
  • dede替换网站模板定制网站建设的流程
  • 天津专业网站制作网站开发模板
  • 做二手车网站需要什么怎样建立门户网站
  • 宁波做网站首荐荣盛网络网站建设太仓
  • 购物网站公司要花费多少钱wordpress 菜单 字体加粗
  • 网站模板如何编辑软件crm免费客户管理系统
  • 微信制作网站设计重庆关键词优化软件
  • 网站的设计与应用论文平台推广计划书模板范文
  • 网站备案用户名忘了怎么办网站做301排名会掉
  • 厦门制作网站企业网站子域名怎么做
  • 青岛微网站开发品牌建设青之见
  • 淄博哪有培训做网站的湖南营销型网站建设企业
  • 动物网站建设深圳最好的营销网站建设公司
  • 各种网站制作陕西建设厅证件查询网站
  • 如何提高一个网站如何做简单网站
  • 游戏网站开发找什么人可建智慧园区设计方案
  • 重庆网站设计公司推荐福州移动网站建设