解释一下,为什么需要接口而不直接实现类。
在这个帖子里讨论了关于接口的使用,有一句话总结的很好:接口是定义行为规约的,抽象类是提供公共行为的,具体类是实现具体行为的。但定义归定义,在实际开发中,应该怎么用接口呢?目前主流技术中的接口是否过度使用?这些问题也许只有大牛(有极其多的项目经验)才能回答吧,俺等小子就不发表什么观点了,做做总结提高提高就行了。
帖子中大多数是强烈支持面向接口编程的,但能看出大部分都是跟风,基本上都没有什么论据来支持这个观点,有的也就是从书上找到的解释接口的好处,但它给项目本身带来多少好处,基本上没人说上来,比如有人说接口可以实现多态,听上去很对,可实际项目又有多少会用到多态,不怕大家笑话,到现在我还没在项目中真正运用过多态,大多数情况下一个接口就是对应一个实现类,感觉就是为了接口而接口,本来这个帖子也没什么新意了,但由于axeon的横空出世,使得这个帖子有一些看点,最后边robbin老大也现身了,不过看来讨论的最后也就不了了之了,关于这个问题本来没有一个标准,从来是一个用来打口水仗的好题目,
Axeon认为大多数情况下,接口无端的增加了代码的复杂性,并且在大多数情况下接口没起到它应该起的作用,或者说是我们一厢情意地认为用接口可以带来移植性、扩展性,可直到这个项目(产品)寿终正寝时,这些特性还没用到过。这就是我们一边叫嚣着要面向接口编程,一边又怀疑这么做有什么用的原因吧。在这个帖子里有一点说有很多,单元测试需要接口,只有面向接口编程才能很方便地进行单元测试。
Axeon在帖子中说:任何一门技术,从最基础的经济学角度来说,都要满足多快好省的要求,才能不被淘汰,才能够淘汰别人。那么什么是多块好省呢?我的理解是要能够快速开发,运行还要高效。如果从这个观点来评判,我想思路会更加清晰的。如果从这个角度来说,接口的害好像大于利,应该摈弃,但为什么面向接口又这个流行呢,我想一定有它的道理吧!
只是俺愚钝,不明其义吧了,
大段引用一下axeon的话
“新技术的特性必然要有需求与此对应,否则这个新特性就是屠龙术,仅仅有可吹嘘的本钱。另外,这个需求首先应该是业务需求,而不是解决自身问题的。因为技术最终是为业务服务的,通过业务来体现技术价值
从多快好省的角度上来说,java当前所谓框架的代表ssh,引导的是一个开发慢,运行慢的技术派系,他的所谓维护性和扩展性(或许)优势是不明确的,甚至是不存在的。开发效率和运行效率是最大的软肋。
为什么要接口?除了隐藏实现,那么就是多态。如果使用spring,有什么好隐藏的?更因为编译器就绑定实现了,怎么玩多态?如果为了庞大而好看,我建议你一个类里只写一个方法好了!
为什么要继承?而不用调用?相比较继承,调用是更清晰的关系,除非是必要继承,没事儿你继承什么?
更不说大把人用的spring的beanFactory,更是笑死人了!这也是spring对他来说最重要的用处。首先如果只用单例,我干嘛不在类和方法上加上static?从实际使用上来说,spring通过hashmap来查找实例,而static是从内存直接调用,哪个更简单,效率更好,甚至零配置?
至于分层,更是笑话!曾经有一个帖子,抱怨招聘了一个技术高手,过来之后就会分层。结果招致群攻,简直笑死我了。我回了一个帖子,说了一句按需分层,竟然被评差贴。
一个项目的技术水平根本就不可以用是否使用ssh,是否分层来进行判断。更不说大把分层的代码里面仅仅是对上层的调用,但是如果程序需要改动,分层越多越难改,便于维护压根就是一个说辞。”
可以看的出axeon是从实战出发的,姑且不说他的观点对不对,但至少很实在,是自己在做项目中的一些体验,比那些动动就空谈这个技术好,那个技术坏的的人强多了,但我想开发不能只追求多快好省,维护才是最重要的,用ssh的好处之一就是它将来便于维护(当然前提是你会用ssh)
这个问题很大。。。。。。。。。。。。。continuing
分享到:
相关推荐
我们将通过分析《要 static 还是不要 static?》这篇博客中的观点,结合具体的代码示例 `InnerInterfaceNotStaticTest.java` 来阐述这个主题。 首先,"static" 关键字在 Java 中主要负责声明类级别的变量和方法,而...
USB接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,否则会烧掉USB设备或者电脑的南桥芯片: 黑线:GND 红线:VCC 绿线:DATA+ 白线:DATA- USB接口的连接线有两种形式,通常我们将其与...
同时,遵循各平台的使用协议,不要滥用接口,以免被封禁。 最后,将这些接口集成到你的项目中,可以创建一个统一的数据获取模块,封装好各个接口的调用方法,使得代码更加整洁和易于维护。这样,无论是进行实时监控...
通常情况下的api接口防护有...本地加密混淆,以上提到的加解密数据和算法,不要直接放在本地代码,因为很容易被反编译和破解,建议放到独立模块中去,并且函数名称越混淆越难读越安全。 User-Agent 和 Referer 限制 ap
- 建议VGA连接线的最大长度不要超过10米,以免造成图像质量下降。 - 连接过程中确保接头安装牢固,以避免图像出现虚影。 #### 6. DVI接口 (Digital Visual Interface) - **定义**:DVI接口是另一种广泛使用的...
uniapp中点击按钮,请求接口时连续点击出现重复请求接口现象
根据给定的信息,“不会...4. **实现细节**:在实现接口成员时,注意不要引入不必要的复杂性。尽可能保持简洁。 通过以上分析和解决方案,我们可以解决“不会实现接口成员”的问题,并确保代码符合良好的编程实践。
- 注意不要关闭网页,等待其自动跳转完成。 6. **设置相关信息**: - 返回商户中心后,在相应位置设置“口碑店铺ID”和“支付宝折扣是否参与”等信息。 - 设置完成后,点击“确定”,完成对接。 #### 三、注意...
文章强调了在使用 USB 接口时需要注意不要把正负极弄反了,否则会烧坏 USB 设备或者电脑的南桥芯片。 此外,文章还介绍了 USB 3.0 接口的定义和特点,包括其高速传输速度和兼容性。文章最后总结了 USB 接口的定义和...
本文将详细讲解如何简化这两种支付方式的接入流程,并重点介绍支付宝的即时到账交易接口、有密退款接口以及微信的统一下单和退款接口。 一、支付宝接入 1. 即时到账交易接口:这是支付宝提供的基础支付接口,允许...
04094_Web_Feature_Service_Implementation_Specification_V1.1.pdf 05007r7_Web_Processing_Service_WPS_v1.0.0.pdf 06042_OpenGIS_Web_Map_Service_WMS_Implementation_Specification.pdf 06083r8_OpenGIS_Web_...
可以进微信>>发现>>小程序搜索:飞机杯男用 进“飞机杯男用”这个小程序可以看我做的接口演示,当然小程序里面也有我的联系方式,可以通过小程序联系我,不忙的时可帮简单解答,虽然说这代码很完整但是要对接到自己...
2. **数据格式**:在定义接口的数据格式时要格外谨慎,确保不会出现数据转换失败或超出长度限制等问题。如果不确定如何选择最合适的数据类型,则可暂时使用字符串作为通用解决方案。 3. **有意义的命名**:无论是...
通过调用这个接口,我们可以获取到想要的股票信息,并进行进一步的数据分析或应用开发。 要实现一个Java应用程序来获取Yahoo股票数据,我们需要以下步骤: 1. **设置HTTP请求**:使用Java的HttpURLConnection或第...
接口模式的制作DLL方法向导 释放的目标文件夹就是 DLL工程文件夹 释放完成后,输入DLL的文件名 ... 且建立的对象,如窗体等,都必须先要释放,否则释放DLL主程序会出错注:3、共享数据库组件 如TAdoconnection
1. 启动服务:运行压缩包内的`cl.exe`文件,会弹出一个对话框,这个对话框是用来显示服务的状态和相关信息,切记不要关闭它,因为服务需要这个进程来维持。 2. 访问测试服务:在浏览器中输入`...
莲匸AI网站系统源码仅21kb,实现用户管理,一键添加接口,一键修改接口,在线ai5个模型聊天,文转图,图转图,并且实现5个不同...注意:请您把没一个页面文件打开仔细阅读批注并修改,最好不要用我的接口把我流量刷爆了
在接口开放过程中,打印接口参数是一项非常重要的任务,它能够帮助开发者进行调试、排查问题以及理解接口的工作方式。本文将详细探讨"api_打印接口参数"这一主题,旨在提供一个全面的理解,包括其意义、实现方式以及...