幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

面试的时候别再说你不会设计模式了

  前言
  最近在设计一个对某个中间件的测试方案,这个测试方案需要包含不同的测试逻辑,但相同的是需要对各个环节进行记录;比如统计耗时、调用通知API等相同的逻辑。
  如果每个测试都单独写这些逻辑那无疑是做了许多重复工作了。
  基于以上的特征很容易能想到模板方法这个设计模式。
  这是一种有上层定义框架,下层提供不同实现的设计模式。
  比如装修房子的时候业主可以按照自己的喜好对不同的房间进行装修,但是整体的户型图不能做修改,比如承重墙是肯定不能打的。
  而这些固定好的条条框框就是上层框架给的约束,下层不同的实现就有业主自己决定;所以对于整栋楼来说框架都是固定好的,让业主在有限的范围内自由发挥也方便物业的管理。具体实现
  以我这个案例的背景为例,首先需要定义出上层框架:Java
  Event接口:publicinterfaceEvent{新增一个任务voidaddJob();单个任务执行完毕paramjobName任务名称paramfinishCost任务完成耗时voidfinishOne(StringjobName,StringfinishCost);单个任务执行异常paramjobDefine任务parame异常voidoneException(AbstractJobDefinejobDefine,Exceptione);所有任务执行完毕voidfinishAll();}publicvoidstart(){event。addJob();try{CompletableFuture。runAsync((){StopWatchwatchnewStopWatch();try{watch。start(jobName);不同的子业务实现run(client);}catch(Exceptione){event。oneException(this,e);}finally{watch。stop();event。finishOne(jobName,StrUtil。format(cost:{}s,watch。getTotalTimeSeconds()));}},TestCase。EXECUTOR)。get(timeout,TimeUnit。SECONDS);}catch(Exceptione){event。oneException(this,e);}}RunbusycodeparamclientthrowsExceptionepublicabstractvoidrun(Clientclient)throwsException;
  其中最核心的就是run函数,它是一个抽象函数,具体实现交由子类完成;这样不同的测试用例之间也互不干扰,同时整体的流程完全相同:记录任务数量统计耗时异常记录
  等流程。
  接下来看看如何使用:AbstractJobDefinejob1newTest1(event,测试1,client,10);CompletableFutureVoidc1CompletableFuture。runAsync(job1::start,EXECUTOR);AbstractJobDefinejob2newTest2(event,测试2,client,10);CompletableFutureVoidc2CompletableFuture。runAsync(job2::start,EXECUTOR);AbstractJobDefinejob3newTest3(event,测试3,client,20);CompletableFutureVoidc3CompletableFuture。runAsync(job3::start,EXECUTOR);CompletableFutureVoidallCompletableFuture。allOf(c1,c2,c3);all。whenComplete((,){event。finishAll();client。close();})。get();
  显而易见Test13都继承了AbstractJobDefine同时实现了其中的run函数,使用的时候只需要创建不同的实例等待他们都执行完成即可。
  以前在Java中也有不同的应用:
  https:crossoverjie。top20190301algorithmconsistenthash?highlightE6A8A1E69DBFE696B9E6B395E6A8A1E69DBFE696B9E6B395Go
  同样的示例用Go自然也可以实现:
  funcTestJobDefinestart(ttesting。T){event:NewEvent()j1:JobDefine{Event:event,Run:run1{},JobName:job1,Param1:p1,Param2:p2,}j2:JobDefine{Event:event,Run:run2{},JobName:job2,Param1:p11,Param2:p22,}j1。Start()j2。Start()for,ch:rangeevent。GetChan(){ch}log。Println(finishall)}func(rrun2)Run(param1,param2string)error{log。Printf(run3param1:s,param2:s,param1,param2)time。Sleep(time。Second3)returnerrors。New(testerr)}func(rrun1)Run(param1,param2string)error{log。Printf(run1param1:s,param2:s,param1,param2)returnnil}
  使用起来也与Java类似,创建不同的实例;最后等待所有的任务执行完毕。总结
  设计模式往往是对某些共性能力的抽象,但也没有一个设计模式可以适用于所有的场景;需要对不同的需求选择不同的设计模式。
  至于在工作中如何进行正确的选择,那就需要自己日常的积累了;比如多去了解不同的设计模式对于的场景,或者多去阅读优秀的代码,Java中的InputStreamReaderWriter这类IO相关的类都有具体的应用。

真正聪明的人,都很会装01hr知乎里有这样一个问题:人为什么要伪装自己?网友江韶音回答说:伪装其实是一种藏心术。第一层境界是掩盖自己的真实意思;第二层意思是巧妙地通过自己的表现,来改变对方;第……今日愚人节这12条养生谣言,你都知道哪几条?做错比不做还可怕又到了四月一日愚人节。对孩子而言,这是个肆意捉弄小伙伴的欢乐日子。成年人被生活愚弄得体无完肤,过节的热情早已不复当年,真诚二字反而成了稀罕物,越来越多的人,借着愚人节说真……终于有人把数据治理的元数据主数据等概念讲明白了DAMA国际数据管理协会对数据治理定义:数据治理是对数据资产的管理活动行使权力和控制的活动集合(规划、监控和执行)。数据治理涵盖了从前端业务系统、后端业务数据库再到业务终……这个冬天,我还想要个冰岛Hall如果冬天的北欧可以分成两个部分,冰岛的冬天想必要独立出来吧!这座没有树的岛,不见得因为冰雪的来临就变得萧条,反而愈发耀眼诱人。有多少人爱慕冰岛,就有多少人爱……windows10自带的截图,你会用吗?如果你临时想使用截图,又不方便打开其他应用程序的时候。其实windows10自带了截图工具,而且功能非常强大。1、电脑桌面全屏截图通常键盘上都会有一个PrtScn的按键,……张檬夫妻穿情侣装同行,小香风外套时髦大方,气质真挺不错的今天穿什么潮流风格穿搭明星教你怎么穿对于近些年的穿衣搭配来说,休闲风格不再是简单的运动装,或者是一些纯色的T恤搭配裤装的休闲风格,往往是会叠加很多的层次感,从而在风格上是……92号汽油突破8元,电动车真的是未来的趋势吗?众所周知,目前燃油车仍然是国内大众家用的首选车,据统计,截止2021年底,全国的汽车保有量达3。02亿辆,所以在全国范围内,人们的日常出行主要还是依靠燃油车,大多数人们对于新能……116101!NBA最差球队诞生,创2大耻辱纪录,20岁小将北京时间2022年3月5日上午,NBA常规赛迎来西部的一场对决,火箭VS掘金。结果,掘金队分别以2526、2620、3624、2931,总比分116101击败火箭。这也是掘金连……从3D天花板到漏洞神经刀,他正在毁掉金州勇士的未来蓝图他正在承受巨大的压力,我相信他会回来的。勇士主教练科尔在赛后评价汤普森今天对阵湖人的表现时,仍旧保持着足够的耐心和期待,但从他的表情和语气不难看出,其内心充斥着迷茫和无奈……谁说中年人不能穿彩色的裙子,学陈冲穿彩色裙子,看着年轻还沉稳有人对于服装有些奇特的刻板印象。例如中年人就应该穿的稳重一点,不能打扮的特别的时髦。其实中年人穿的服装的确不能很幼稚,不过也不一定要穿得过于的朴素成熟。例如彩色的裙子,虽……赫迪拉谈71巴西勒夫中场时警告,不尊重巴西的球员不准踢决赛直播吧3月5日讯近日前德国队中场赫迪拉在接受ESPN采访时透露,2014年世界杯半决赛德国队71大胜巴西之战的中场休息时,勒夫在更衣室警告球员们,下半场谁不尊重巴西队将被立马换……中兴发布四款新机,5100毫安电池65W快充,搭载国产处理器中兴通讯在MWC2022巴塞罗那展会上宣布,推出四款BladeV40系列新机,其中三款搭载国产紫光展锐处理器,另有一款搭载联发科芯片。BladeV40标准版手机搭载6。6……
我不是变态,我只是控制不住自己的性欲,给陌生的你一个建议这是我科普的第十三篇故事编辑米奇的漫画屋前言性教育在中国始终处于特别尴尬的地位,因为有些话实在是难以启齿,所以很多家长不知道是否该对青春期的孩子进行性教育。其……新春走基层5G信号徜徉在挂壁公路云海、日出、奇峰、松涛新春佳节临近,山西省陵川县4A级景区王莽岭迎来一波旅游热潮。游客们纷纷用手机记录、分享这里的绝美风光。在5G网络加持下,无论是直播、视频、通话,在景区主线……围甲季后赛首轮辜梓豪两战苦手朴廷桓,浙江深圳晋级未曾想棋风彪悍的辜霸竟被朴廷桓压制得喘不过气来,在过往10战中仅得零星两胜。季后赛首轮第二场,两人再度碰撞,序盘取得先机、中盘大幅领先的辜梓豪在后半盘出现重大失误,眼见被逆转惨……博物馆级光源!小蒙智能护眼台灯开启众筹售价899元【宅秘新闻】如今,人们越来越重视用眼健康,选购一款护眼台灯成为不少人的消费趋势。近日,宅秘了解到,小蒙智能护眼台灯在小米有品开启众筹。这款产品专为阅读而设计,售价899元。……梨可以泡酒吗?怎么泡最好?梨鲜甜可口、香脆多汁,而且营养丰富。含有维生素A、维生素B、维生素C、维生素D和维生素E,也是大家常见的水果。而用梨泡酒的功效也很多,比如能生津止咳、润燥化痰、润肠通便,还能清……篮球名人堂西奈川出生的灌篮高手,篮网队新星卡梅伦托马斯连续3场40超越艾弗森成为最年轻的该记录创造者,他就是21岁的篮网队潜力新星卡梅伦托马斯。一个天生的篮球得分手,从小到大得分能力出类拔萃的天才球员。在欧文被交易、杜兰特和席梦思……76人或3换2报价四届篮板王,火箭有意库明加,小马丁有望拿扣76人也想做大交易组成豪华阵容去争冠,但是谈何容易。像阿奴诺比这种级别的球员都标价至少三个首轮签,76人手中的优质筹码实在是太少了。美媒《fansided》表示76人目前……特写从人工智能优先(AIfirst)到最末谷歌是如何掉队的?凭借新推出的实验性对话式人工智能服务Bard,谷歌正在手足并用地推出人工智能产品。但过去的丑闻、糟糕的产品发布和人才流失正让它处于一个尴尬的境地在一个曾经它推动创造的领域追赶别……盘点深圳女冰2022大事记,代表中国队冬奥展风采2022年是中国冰球发展的重要年份,国家队在北京2022年冬奥会展现了风采、在世锦赛上实现了升组;深圳获得2023年女子冰球世锦赛承办权;中国俱乐部再次夺得俄罗斯女子冰球联赛冠……京津冀最美湿地衡水湖迎立春后首雪停泊在衡水湖的游船披上了银装。陈康摄雪中的衡水湖美景。陈康摄成群的骨顶鸡在觅食。陈康摄雪后衡水湖上的鸟儿。陈康摄衡水湖,雪覆冰上,与未冻的水面交相映衬。……被胡辣汤烩面养大的河南胃,咋就爱上了这一口?只要说起米粉,广西、湖南、福建等地的吃货就会马上跳出来,摇旗呐喊我们那里的米粉天下第一!此话一出,有着一天就能吃到100吨鲜湿米粉称号的江西老表,默默相视一笑,端出一碗粉开干。……距离上海车程2。5小时的古镇里居然藏着这样一个酒店亲子欢乐过大年离上海车程2。5小时的宁波镇海有这样一片古镇名为郑氏十七房,据说建筑源自明清时代,古建筑区保留了当时的商铺、民居,在业主改建下整成了一片度假村。酒店体验……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网