专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Autowired巧妙搭配策略模式

  一、策略模式
  1。1策略模式概念
  策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
  1。2策略模式结构
  策略模式的结构包括三种角色:策略(Strategy):策略是一个接口,该接口定义算法标识。具体策略(ConcreteStrategy):具体策略是实现策略接口的类。具体策略实现策略接口所定义的抽象方法,即给出算法标识的具体算法。上下文(Context):上下文是依赖于策略接口的类,即上下文包含有策略声明的变量。上下文中提供了一个方法,该方法委托策略变量调用具体策略所实现的策略接口中的方法。
  策略模式接口的类图如下所示:
  策略模式UML
  1。3常规策略模式不足点
  在我们平时写的策略模式代码中,具体采用哪个策略实现类,是在Context类中通过入参来判断的,如果随着需求扩展,需要增加一个新的策略实现类,必定要来修改Context类,这就违背了【开闭原则】。如果能做到:有新的策略实现需要增加时,只需要新建一个策略实现类,去实现策略接口就完事,其他旧代码完全不用修改。这才是我心目中的【开闭原则】,可喜的是,利用Autowired注解与策略模式搭配,就能实现这一目标。二、Autowired注解预热
  2。1Autowired自动装配多个实例
  平时我们一般都是通过Autowired自动装配单个实例,但这里我会告诉你,它也能自动装配多个实例。
  2。2Autowired实现自动装配多个实例
  用一个List集合接收IUser类型的参数ServicepublicclassUserService{AutowiredprivateListIUseruserList;AutowiredprivateSetIUseruserSet;AutowiredprivateMapString,IUseruserMap;publicvoidtest(){System。out。println(userList:userList);System。out。println(userSet:userSet);System。out。println(userMap:userMap);}}
  增加一个controllerRequestMapping(u)RestControllerpublicclassUController{AutowiredprivateUserServiceuserService;RequestMapping(test)publicStringtest(){userService。test();returnsuccess;}}
  userList、userSet和userMap都打印出了两个元素,说明Autowired会自动把相同类型的IUser对象收集到集合中。
  2。3利用Autowired自动装配多个实例与策略模式搭配
  利用Autowired自动装配多个实例与策略模式来搭配使用,变种后的策略模式:不需要content类来按条件选择具体的策略类。一个策略接口,多个具体策略实现类。每个具体策略实现类,通过入参参数判断自己是否需要执行,如果不需要执行,直接返回。调用策略的client类,通过Autowired自动装配多个实例,一次性拿到所有策略实现类,通过循环调用这些策略实现类。有新的策略实现,新建新的具体实现类就可以了,不需要像以前一样去修改content类,真正实现了开闭原则。三、Autowired搭配策略模式实现
  3。1需求背景
  在我们平时开发的项目中,大部分都会有App站外推送的功能,通常,我们一般都会采用第三方推送集成平台,如某盟或某光。但我们项目为了更高的推送到达率以及更灵活的推送配置功能,我们采用了对接各厂商官方的推送平台的方式,比如对接华为、小米、Oppo等。这个需求场景就非常适合采用策略模式来开发,这次我们用Autowired搭配策略模式来实现。
  3。2代码实现推送策略类publicinterfaceIPushStrategy{paramuserId:用户IDparammsg:推送消息paramsupplier:推送供应商returnbooleanpush(LonguserId,Stringmsg,Stringsupplier);}华为推送策略ServicepublicclassHuaWeiPushServiceimplementsIPushStrategy{Overridepublicbooleanpush(LonguserId,Stringmsg,Stringsupplier){if(HuaWei。equals(supplier)){System。out。println(华为推送给用户userId,推送消息:msg);returntrue;}returnfalse;}}Oppo推送策略ServicepublicclassOppoPushServiceimplementsIPushStrategy{Overridepublicbooleanpush(LonguserId,Stringmsg,Stringsupplier){if(Oppo。equals(supplier)){System。out。println(Oppo推送给用户userId,推送消息:msg);returntrue;}returnfalse;}}小米推送策略ServicepublicclassXiaoMiPushServiceimplementsIPushStrategy{Overridepublicbooleanpush(LonguserId,Stringmsg,Stringsupplier){if(XiaoMi。equals(supplier)){System。out。println(小米推送给用户userId,推送消息:msg);returntrue;}returnfalse;}}推送策略contextComponentpublicclassPushContextimplementsIPushStrategy{AutowiredprivateListIPushStrategypushStrategyList;Overridepublicbooleanpush(LonguserId,Stringmsg,Stringsupplier){booleansupplierMatchedfalse;for(IPushStrategypushStrategy:pushStrategyList){supplierMatchedpushStrategy。push(userId,msg,supplier);if(supplierMatched){break;}}returnsupplierMatched;}}Api(tags推送策略模式)RestControllerRequestMapping(strategy)publicclassTestController{ResourceprivatePushContextpushContext;ApiOperation(value推送)GetMapping(push)publicbooleanpush(){LonguserId273L;Stringmsg您有新的订单;StringsupplierHuaWei;调用的是华为推送实现策略returnpushContext。push(userId,msg,supplier);}}
  3。3后续故事
  声明:以下故事纯属虚构,如有雷同,纯属巧合。
  突然,某一天,产品小姐姐跑过来说,我们今天要完成Vivo推送平台的开发和相关功能测试,今天上线,行不行?
  这时,我以往心中的那一万匹马这次竟然不见了,我嘴角微微上扬,露出我富有职业素养、标准而又职业的微笑,回答道:行(男人不能说不行)。我回到工位,新建了一个Vivo推送的策略实现类并进行实现。
  幸运的是,之前那些经过测试小妹妹九九八十一次测试好的推送功能代码,一行都不需要改动,保证了程序的稳定性,更降低了测试成本。此时,【开闭原则】在我的心中闪闪发光。

荐书我的九条命外国资本进入是怎样蠹居棊处铺设战局张兰生于1958年,是SHotel董事长汪小菲的母亲,台湾地区有名女艺人大S的婆婆。生于三年困难时期,历经动荡,她独自下海打拼,积攒人生桶金后回国,从一家小饭馆做起,成为了身家过亿分享个普通人在股市赚钱的简单办法现在这个时点谈股市,也许大多数人不爱听,毕竟过去一年大多数人是亏损的。这里说的普通人,是在股市里面的资产100W,并且不具备股票市场分析知识,也没有时间全职盯盘炒股的人。如果你在股恒瑞医药复星医药华东医药,你看好谁我国是人口大国,也是医药需求大国。不含中药,我国A股上市的医药公司总共152家今天,我们一起看一下化学制剂行业的3家公司恒瑞医药复星医药华东医药截至去年3季度,这三家公司净利润之和吴晓波2023跨年演讲(3)方法论四越卷的生意,越应该工具迭代。自2020年起,我们看到互联网工具在中国的各行各业都被广泛应用。我们的手机中新增的每个App都是一个新的工具迭代。但是大家往往有一种误解,就是互立足于交易看货币什么是货币?所有能够实现交易的都是货币。货币的三大功能价值尺度交易媒介和财富储藏中,交易媒介是基础功能,价值尺度和财富储藏是衍生功能,因为如果无法实现交易,价值与谁对比尺度,财富有不良贷款转让试点扩容,十一省市中小银行纳入有何深意经济观察网记者胡群2022年12月30日,银登网发布中国银保监会办公厅关于开展第二批不良贷款转让试点工作的通知。在6家国有控股大型银行和12家全国性股份制银行试点基础上,开发银行进2023,从数字经济开始不经意间我们送走了2022,眨眼间我们迎来了2023!新的一年开始了,我要把最美好的祝福送给一直支持和鼓励我最风云的老铁们,祝你们在新的一年里,好运日日有,财源滚滚来!回到今天文章中国股市会大涨吗?丨开年十大猜2023年的中国股市涨跌如何?可以从内外政治经济环境企业经营库存周期市场参与者心理预期三个方向来做一些推演。外部经济环境上,欧美大通胀冲击最剧烈的时期已经过去,2023年会逐步步入汽车早报恒大汽车已交付324辆恒驰5特斯拉将于明年1月公布ModelSXPlaid在华售价证监会终止对比亚迪半导体发行注册程序证监会官网12月30日消息,2022年11月23日,比亚迪半导体股份有限公司和保荐机构中国国际金融股份有限公司提交了申请,主动要求撤回注册申请文广州车展第一把火!阿尔特汽车是什么来路?没想到,给广州车展送上第一把火的,居然是名不经传的阿尔特汽车。12月29日,在广州车展展台搭建旗舰,位于A区1楼5。1馆1E08的阿尔特汽车展台工作区域意外起火,目前明火已经扑灭没不禁摩托禁汽车?好评!马上就要新年了聊了一整年车,咱们还是聊聊文化吧,我从摩托摩旅看到一个另类的城市,挺佩服人家市长魄力的,转来给各位分享下在中国和摩友谈起摩托车,禁摩简直像个永恒的话题,禁汽车更像是我
过半网友支持马斯克卖掉特斯拉10股票,马斯克会遵守投票结果金磊发自凹非寺量子位报道公众号QbitAI宇宙网红马斯克,一条推文再次引爆话题。这一次内容的料,也是有够猛的卖股票!马斯克在推文中询问到最近有很多人认为未实现收益是一种避税手段,所天才少年的覆灭史茅侃侃23岁身家6000万,12年后却选择自杀身亡2006年,京城IT四少登上了中国企业家的封面,天才少年茅侃侃还未被熟知。杂志的总编辑认为80后IT四少有潜力成为创业偶像,于是力荐茅侃侃李想和高燃上了央视的对话访谈节目。那时茅侃古代嫡优于庶,子优于女,那么问题来了嫡女和庶子谁的地位更高综述很早之前,曾经出现过一段时间的母系社会,也就是以女为尊。那时候,男子外出狩猎觅食,随着男性角色重要的不断凸显,父系社会逐渐就将母系社会取代。后来社会的制度变化,公天下到家天下的说说中国最南端的领土曾母暗沙曾母暗沙是中国领土的最南端,这是中国所有学生的地理课本里的考点,也是所描述中国地理概况中肯定要提到的一点。接下来说说为什么叫这个名字呢?!南海诸岛以前中国并没有详细的地图和公布官方慈禧的袜子有多豪,造价不菲,需上千人缝制,只穿一次就扔掉在清朝遗留下来的许多老照片中,我们甚至可以看到慈禧脚上的袜子都是当时的最新款。这样一个紧跟时尚,追逐时髦的老太太,为何会成为大清亡国的罪魁祸首?慈禧和我们现在都市中的大部分女性一样毛泽东晚年与江青饮食不对味,气愤直言吃不到一起就分开吃1956年某天夜里,毛泽东又是连续工作了十几个小时。在值班卫士的轻声提醒下,他才恍然意识到自己已经一天没吃饭了,于是拖着疲惫的身体,笑着站起来说嗯,有些饿了呢,好吧,我吃一顿饭吧。谁发明了飞机?还用问吗?地球人都知道,美国的莱特兄弟。其实,也不尽然。飞机的发明是一个接力过程,莱特兄弟跑的是最后一棒,完成了冲刺,但是许多人都为此付出了努力,其中,有五位,包括莱特兄弟,为此做我们从哪里来?自从1871年英国著名生物学家达尔文发表人类起源及性的选择一书,提出人类起源于动物是由古猿进化而来而不是上帝创造的观点以来,越来越多的考古学和人类学的新发现日益证明了这一点。但人类你所坚持的真理,或许只是个偏见而已很多东西你只能去无限接近,你所看到的听到的以为的,并不一定就是真相,会有很多东西把真相包裹起来,你所看到的只是它所呈现出来的表象而已,世间许多事情不是非黑即白,在黑与白之间,还有很小伙挑战极限运动,56秒骑摩托车上天门山999级台阶,游客看傻了对于一些喜欢户外运动的游客来说,挑战不可能是他们经常去做的事情。我们一般游客看来一些惊险刺激的做法,却是他们寻求成功的一种方式。今天小编就带大家来看一个案例。简直太刺激了!小伙挑战2020年,我在川藏线上遭遇野狼群,用面包逃过一劫在中国古代许多文学作品当中,作者都把狼这种动物,当成是凶恶残忍的代名词,然而现实中的野狼,到底有没有那么恐怖?今天就以我真实经历的故事,来跟大家讲述在川藏线上,曾经遭受到野狼的故事
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网