武器接口单元测试和接口测试是什么?

微机原理课后单元习题-单元2-8086cpu_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
微机原理课后单元习题-单元2-8086cpu
上传于||文档简介
&&微​机​原​理​课​后​单​元​习​题​-​单​元-06​c​p​u
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢Java 中的接口有什么作用?
例如我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现方法,那我不如直接就在这个类中写实现方法岂不是更便捷,还省去了定义接口?接口在java中的作用是什么?个人觉得只是一种规范。大家的看法呢?
能问这个问题,说明(1)你很会思考(2)编程水平还是处于起步阶段。“接口是个规范”,这句没错。“不如直接就在这个类中写实现方法岂不是更便捷”,你怎么保证这个接口就一个类去实现呢?如果多个类去实现同一个接口,程序怎么知道他们是有关联的呢?既然不是一个类去实现,那就是有很多地方有用到,大家需要统一标准。甚至有的编程语言(Object-C)已经不把接口叫 interface,直接叫 protocol。统一标准的目的,是大家都知道这个是做什么的,但是具体不用知道具体怎么做。比如说:我知道 Comparable 这个接口是用来比较两个对象的,那么如何去比较呢?数字有数字的比较方法,字符串有字符串的比较方法,学生(自己定义的类)也有自己的比较方法。然后,在另外一个负责对象排序(不一定是数字喔)的代码里面,肯定需要将两个对象比较。这两个对象是什么类型呢?Object a,b?肯定不行,a & b 这样的语法无法通过编译。int a,b?也不行?一开始就说了,不一定是数字。....所以,Comparable 就来了。他告诉编译器,a b 两个对象都满足 Comparable 接口,也就是他们是可以进行比较的。具体怎么比较,这段程序不需要知道。所以,他需要一些具体的实现,Comparable 接口有一个方法,叫 compareTo。那么这个方法就是用来取代 &、& 这样的运算符。因为运算符是编译器保留给内置类型(整数、浮点数)进行比较用的,而不是一个广义的比较运算。如果你可以明白 JDK 自身库里面诸如 Comparable 这样已经有的接口,那么就很容易理解自己在开发程序的时候为什么需要用到接口了。
这是一个初学者非常常见的问题。例如我定义了一个接口,但是我在继承这个接口的类中还要写接口的实现方法,那我不如直接就在这个类中写实现方法岂不是更便捷,还省去了定义接口?接口就是个招牌。比如说你今年放假出去杭州旅游,玩了一上午,你也有点饿了,突然看到前面有个店子,上面挂着KFC,然后你就知道今天中饭有着落了。KFC就是接口,我们看到了这个接口,就知道这个店会卖炸鸡腿(实现接口)。那么为神马我们要去定义一个接口涅,这个店可以直接卖炸鸡腿啊(直接写实现方法),是的,这个店可以直接卖炸鸡腿,但没有挂KFC的招牌,我们就不能直接简单粗暴的冲进去叫服务员给两个炸鸡腿了。要么,我们就要进去问,你这里卖不卖炸鸡腿啊,卖不卖汉堡啊,卖不卖圣代啊(这就是反射)。很显然,这样一家家的问实在是非常麻烦(反射性能很差)。要么,我们就要记住,中山路108号卖炸鸡,黄山路45号卖炸鸡(硬编码),很显然这样我们要记住的很多很多东西(代码量剧增),而且,如果有新的店卖炸鸡腿,我们也不可能知道(不利于扩展)。
1. 接口是一种规范很好,你已经知道接口是一种规范了!下面这张图是我们生活中遇到的接口:电源插座接口。没错!它就是一种规范,中国2010年制定的插座标准。2. 为什么需要规范呢?因为有了接口规范:任何电器只有有符合规范的插头,就可以获得电力任何厂家(西门子插座,TCL插座,公牛插座...)按照规范进行制作,就能进行供电每个厂家插座的生产技术、工艺都不一样,因为接口的implementation可以不一样,但是并不影响电器的正常工作。插座的内部实现对于电器来说是完全屏蔽的。对于软件开发是类似的:按照接口规范进行方法调用,就能获得所期望的功能按照接口规范实现接口的的方法,就能提供所期望的功能接下来是重点了:软件开发大多是一个协作性的工作:电器和插座分别是不同人完成的,有了接口大家就能分头开干,都按照接口来办事,各自做完就能轻松地整合到一起。各部分的测试也更加方便。软件需要不断演化:今天你用了公牛的插座,过了一年你可能换个西门子的插座,要做没有这套国家接口标准,各自为政,那估计你是换不了插座了。你想想,咱们每次去美国出差,都得带个转接头,否则就跪了,多不方便啊,因为接口规范不同啊!(这些个转接头你是不是闻道一种浓浓的Adapter模式的味道)。3. 什么时候需要通过接口建立规范为了抽象系统的某种公共行为,或者封装变化性,进行系统设计的时候你需要抽取出接口,这样将来你的系统将更加灵活。而你所说的,直接写实现的方式在确定性的场景下当然也可以,不涉及到分工协作、变化性、测试方便等因素时,当然用不着接口了。比如一般情况下你犯不着为一个Pojo的getter和setter也弄个接口和实现分离。所以面向对象的大神们孜孜不倦地教导我们说:接口和实现分离,面向接口编程。最后推荐一篇Java接口的基础教程:欢迎大家访问
获取更多Java内容
接口是软件工程最重要的概念,在java上要格外感谢Spring的贡献。这个概念对于新人来讲,是比较难理解的,最重要的原因就是需要有一定的代码量,特别是做过一些项目的重构,维护,变更等事情的时候感触才会更深一些。1 “接口+实现”最常见的优势就是实现类和接口分离,在更换实现类的时候,不用更换接口功能。比较常见的例子是发送短信。一般发送短信的场景包括注册用户,找回密码,重要通知,修改交易密码等。短信现在的结构是先接上各家短信通道公司,再经由联通移动等发送出去。一般而言,短信分成两种,一种注册短信,一次只发给用户一条。这种短信到达率比较高,可能会在99%以上,也要看各种短信通道方,更会区分移动和联通。另外一种是营销短信,这种短信常见于“某公司3周年大庆,1元领取程序员鼓励师”之类的。这种短信到达率非常低。而且也经常会被封掉。但是短信又是注册的第一步,用户体验做的再好,手机收不到验证码也没用。所以觉见的做法是,会备用两个或者是多个短信通道。刚刚已经讲过了,调用短信接口的地方比较多,可能是用户发起的,也可能是程序检测到某种行为触发的。也就是说,会有多个地方调用短信接口,那么我们这个时候要解决的问题就是,能否在更换短信通道方的时候,不更改其他模块中被引入的代码?接口在这个时候就完美的实现了这个功能点。无论是哪个模块,我要发送的内容和预期的结果是一致的,具体是用哪家短信通道的实现类,不重要。所以通常是一个SMSService做为接口,不同的公司因为有不同的实现方式,所以会有多个实现类,比如说SMSService{CorpA}Impl,SMSService{CorpB}Impl。这是一个完美的抽象,无论未来有多少种短信公司接入,无论短信公司的营销人员送了多少个香吻给公司的商务总监,程序员总是能够开心的完成功能。2.这对于做单元测试也非常有帮助。如果你是一个有了那么点经验的程序员,如果你还没有习惯TDD的开发。可以体验一下这种写法。还是拿短信为例。先写一个SMSServiceTest。然后写一个Test方法。
这个时候什么都没有,不用管。先直接这么写。int code=SMSSevice.sendTextMessage(mobile,content,type);这个时候IDE会提示你没有这个SMSService,用代码自动生成工具去创建这么一个接口出来。再根据提示把方法创建出来。再写 SMSService smsService=new SMSServiceCorpaImpl();再根据代码把实现类生成了。一般来说IDE会自动留一个空的方法。不用管。这里只是一个简单的例子,但是你发现,当你用TDD的这种方式去写代码的时候,完全不用关系SMSService是怎么内部实现的。你只需要继续写你的单元测试代码好了,明确的知道这个SMSService要做的功能是发送短信,需要传递手机号,内容,类型,返回一个状态码。那么接着说为什么对单元测试很方便?一般而言会用Spring配置Bean,所以实际上你的单元测试代码也不用有改动,无论是测试哪一个实现类,都只通过更改配置文件就可以完成。想想,如果没有接口呢?是不是要对每一个短信通道单独写一个单元测试的方法?3.对于不需要频繁更变实现类的方法,是不是就可以不用写接口了?答案是No。整个系统架构的代码可以单纯认为有四部分构成。Model+Interface+Service+UtilModel是纯粹的Pojo,贫血模型,Inteface和Service是接口和实现分开的,Util是全项目通用,或者是跨项目通用的,跟业务逻辑没有任何关系的。写接口最大的好处就是在你写的Controller代码,或者是Service里的主要业务逻辑代码的时候,屏蔽掉细节。写一个业务逻辑的时候,比如说修真院的加入班级。第一步,做校验,用户是否为空,班级是否不存在,是否已经加入了班级等等。第二步,更新班级和用户的关系表,更新班级总人数,更新职业总人数,更新用户的最新班级ID。第三步,发送系统通知,告知用户加入班级成功。如果说不用接口,只用实现类的话,第一种方式就是把所有的代码都写在这个Controller里去,代码会非常非常繁琐,一个函数突破几千行轻轻松松,而且改动起来很麻烦。第二种方式就是抽象出来函数。这种方式在某种程度上能够解决代码块大的问题,但是你必须要New一个实现类出来,想想在上述逻辑中,需要new几个实现类?这些实现类就会被New的各处都是,甚至改个名字都很蛋疼。但是如果你使用接口的话,你会发现,接口是强制于你去将复杂的业务逻辑抽象成具体做的事儿。比如说,if(user==null){
// to do something}就变成了CheckUser(uid)这么一个接口。实现类也明确了自已要做的事情。从某种程度上来说,抽象成一个私有方法也能解决这个问题,但是一般都会推荐,如果你发现你写了很多私有方法,要么是他们可以继续演化成一个util,要么是可以成为一个Service。嗯,说的有点乱。
你写接口你写实现,就不用写接口了。我写接口你实现,接口不就用上了。我不给你规定好了,你怎么知道该实现哪些内容呢。更进一步,我写接口你实现,你今天不在,我明天出差,程序后天交工,那我今天必须把调用这个接口的代码写好。所以就需要接口中有函数,有明确的函数签名。我写个接口,再把调用函数写好,明天你把接口实现了,传个实例进来,交工。interface换个叫法就是contract,有点合同的意思。A实现了这个接口,代表A承诺能做某些事情。B需要一些能做某些事情的东西,于是B要求,必须实现了A接口,才能被我调用。实际上也就是个“规范”。
接口是一种抽象的方法比如你买了一台电脑,你拿它来上网,相当于这台电脑实现了“能上网”的接口。然后这台电脑忽然坏了,你换了一台ipad的,仍然可以拿来上网。对于你来说,它是否是电脑并不重要,重要的是它是否“能上网”。放进程序里,假设你有一个类叫“网民“,它只干一件事,那就是上网:class 网民 { public void 上网 (能上网的 东西) { 东西.上网(); }}那么当你使用这个类的时候,你可以给它一部电脑,也可以给一台ipad。如果你把”能上网“这个接口变成某一个类的方法,那网民类就要改写:class 网民 { public void 用电脑上网 (电脑) { 电脑.上网(); } public void 用iPad上网 (iPad) { iPad.上网(); }}忽然有一天,智能家居出现了,你发现家里的电视也能上网了,你就不得不更改”网民“类,加入另一个方法好让它能使用电视上网。你能问出这个问题是因为你没有设计API的经验,如果”网民“类是在一个API中,你就不能随意更改了,于是导致了即便出现了能上网的电视,网民还是无法使用的情况。
接口就是吉祥馄饨的招牌。你进去,都会在墙上挂着菜单,都会从冰箱里拿出一个个方便盒装的冷冻馄饨……但至于味道是不是完全一样(尤其是汤的味道),服务是不是好,卫生够不够格,就看各家店铺的具体实现了。
定义接口一般是库开发人员或团队开发使用较多,可以隔离实现和使用间的耦合性。对于初学者一般是自己实现自己调用,是没多大必要。
接口的作用对于很多新手来说很不容易理解,我给大家举个例子。接口只是一个规范,所以里面的方法都是空的。假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口,public interface PetRestaurant { public void buy();}当一只狗看到了,知道自己是宠物,所以它去实现这个接口public class DogPet implements PetRestaurant { @Override public void buy() {
System.out.println("我是狗,我要买狗粮"); }}当一只猫看到了,知道自己也是宠物,所以也去实现这个接口public class CatPet implements PetRestaurant { @Override public void buy() {
System.out.println("我是猫,我要买猫粮"); }}当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮食,一个要狗粮食。因为他们都实现了 我这个接口,都可以买。下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant 类型的宠物,注意,这个PetRestaurant 是接口public class test { public void buy(PetRestaurant pet) {
pet.buy(); }}好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类public class Tests { public static void main(String[] args) {
PetRestaurant dog = new DogPet();
//实例化一个狗,相当于把狗顾客实例化
PetRestaurant cat = new CatPet();//实例化一个猫,相当于把猫顾客实例化
test t = new test();
//实例化一个店小二
t.buy(cat);
//把猫交给店小二
t.buy(dog); //把狗交给店小二 }}这样运行的结果就是我是猫,我要买猫粮我是狗,我要买狗娘你知道吗,整个过程我这个店主其实根本不知道来的到底是猫是狗还是其他什么,我只要有一个店小二,把这些来的不知什么动物都全部交给店小二,店小二就知道怎么去卖了,因为这些狗啊猫啊都实现了我这个宠物店的接口,而店小二就负责接待所有实现了我这个接口的动物。这就有一个好处,假如明天来了一头小猪,只要它实现了我这个接口,我只管交给店小二处理就OK了,我这个店小二根本不需要变化,我这个店主也只需要实例化一下这个动物就OK你想,假如没有接口,会怎么办,来一个猫,我要去创造一个猫,还要实例化,来一只狗,我要创建一只狗,同样要实例化,还要配备专门的店小二去接待,就会相当麻烦
大家说的都很对,我再补充一点。接口在开发过程中可以快速分离工作内容。比如调用者在写业务逻辑的时候需要一个功能,可能是数据库访问,或者复杂计算,但是他的工作专注于实现业务逻辑,不想分开精力去做底层实现,那么他只需要先实现一个接口,定义了规范,然后就可以继续他的业务逻辑代码了。而实现者可以根据这个接口规范,做具体的实现。这样通过使用接口就可以快速的分离工作内容,达到团队并行工作的目的。此外,如果规范是通过接口定义的,那么当你这个功能有多个实现时,你只要实现了这个接口,那么可以快速的替换具体实现,做到代码层面的完全可以分离。总结起来就一句话:接口或者规范可以在开发过程中做到分离。
已有帐号?
无法登录?
社交帐号登录君,已阅读到文档的结尾了呢~~
武器装备接口通用化建设的初探与设想
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
武器装备接口通用化建设的初探与设想
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口02-2章 SDH接口单元_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
02-2章 SDH接口单元
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 接口数据单元 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信