javajava 面向接口口编程有什么特殊的用处

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
谁能给一个面向接口编程的例子
这个问题已被关闭,原因:问题质量差,问题太水、伸手党
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
最近在看《大话设计模式》,里面第五章讲了依赖倒转原则。举例是,电脑的CPU、内存、硬盘都是在针对接口设计的,如果针对实现来设计,内存就要对应到具体的某个品牌的主板,那就会出现换内存需要把主板也换了的尴尬。原话解释:抽象不应该依赖于细节,细节应依赖于抽象。
这个问题已经被关闭无法回答
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。没有更多推荐了,
不良信息举报
举报内容:
Java面向接口编程的好处
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!面向接口编程还有一些好处:
面向接口编程还有一些好处:&
1.一个功能的调用者只需要关心如何使用此功能,而无须关注功能的实现。&
如:如我们在main 方法中调用一个client程序,我们只需要Client client = new ClientImpl(),
无论 ClientImpl
类中定义了多么复杂的成员函数和成员变量(包括javadoc),你都看不到,你也无须看到。&
2.面向接口编程便于团队合作,有了统一的接口(接口是公开的,里面的方法都是public的),无须担心别人的程序无法使用我的实现(他根本就不关心)。假如我们团队正在做一个计算器小程序,想要计算1+2+...+100=?,product
写了一个接口,让两个员工分别实现,他最后看那个程序算法算得快,于是这两个员工就对接口分别做了实现。PM只需要写一个程序就可以评估他们的算法。&
public int getTime(Interface in){&
int a = System.currentTime();&
in.run();&
return Sustem.currentTime()-a;&
试想一下,如果没有接口,这个经理必须分别new这两个员工的class,然后调用可能不同的方法(A:run(),
B:go())来运行。&
3.(回答你的问题)接口的继承关注的是功能的扩展,而不是代码的修改。class的继承就是功能性代码的增加。两者关注的焦点不同。&
本人观点:&
我个人认为,接口一旦设计好了,很少需要修改,除非业务逻辑或需求有较大变动。&
多继承的用途(只是举个例子):&
如,SUN对一项技术写了一个规范如J2EE的JMS规范,很多vender在自己的应用服务器(如WebSphere, WebLogic,
Jboss等)都要实现这一个规范,故且把这个规范叫做接口,每个vender想要对这个规范添加自己独特的功能,怎么办呢?就是用接口的继承,然后对继承了的接口做实现。&
举个例子:&
public interface InterfaceA {&
public void method1();&
public interface InterfaceB {&
public void method2();&
public interface InterfaceAB extends InterfaceA,
InterfaceB{&
public void method3();&
public class InterfaceAImpl implements InterfaceA {&
@Override&
public void method1() {&
System.out.println("The implemention of InterfaceA.");&
public class InterfaceBImpl implements InterfaceB {&
@Override&
public void method2() {&
System.out.println("The implemention of InterfaceB.");&
public class InterfaceABImpl implements InterfaceAB {&
@Override&
public void method1() {&
System.out.println("The implemention of
InterfaceAB(method1).");&
@Override&
public void method2() {&
System.out.println("The implemention of
InterfaceAB(method2).");&
@Override&
public void method3() {&
System.out.println("The implemention of
InterfaceAB(method3).");&
public class Main {&
public static void main(String[] args) {&
InterfaceA a = new InterfaceABImpl();&
InterfaceB b = new InterfaceABImpl();&
InterfaceAB ab = new InterfaceABImpl();&
a.method1();&
b.method2();&
ab.method3();&
利用多态(向上转型),我们就可以达到不同vender间接口的统一。&
总之,这种情况我很少见,主要用1、2的特性。&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Java 中的接口有什么作用? - 知乎<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title="1,874分享邀请回答11 条评论分享收藏感谢收起1添加评论分享收藏感谢收起面向接口编程到底有什么好处, - ITeye问答
面向接口编程在实际开发中到底有什么好处?
网上说了一大堆,包括结构清晰,类之间通信简单易懂,扩展性好,提高复用性等等。
在我开发过程中,我都用到了面向接口编程,可是除了觉得麻烦,真的看不到什么好处。
spring中定义service接口,dao接口,除了多写个接口外都看到有什么好处。
而且实际开发中我们公司压根就没用到接口编程,也没觉得有什么不妥。
难道仅仅是因为jdk,服务器等用到了面向接口编程,我们也跟风吗?
我真的不是太理解,也许是我太菜,各位大牛,望指点小弟一番。
说明下:我开发过的项目都比较小。
采纳的答案
为了能通过编译
这帖该转问答区了
脚本语言可以轻松的
var a = B/var a = A
a。getResult()
但是java不行
只能让A和B实现一个接口C
然后就可以
C a = A/ C a = B
a。getResult()
当你有一个X调用不同的逻辑但是相同类型的对象时候
if (condition==1){a= A}else{
a.getResult();
如果你对设计模式有所了解
你就会发现更多接口的强大之处
(其实不强大,但是到了java这种语言里,就、、、、、)
去欣赏下Spring吧。
& 在小项目中,是体验不到的。使用接口编程,易于程序扩展,降低程序耦合性。
& 举个常用的例子说吧,你有个方法为:public viod doxx(ArrayList arraylist),方法调用时,参数必须为ArrayList对象。某天,当参数需要更换为其他集合类时,必须更改代码;此时如果用接口的话,就不须了;将方法更改为public viod doxx(List list),方法调用时,参数就很灵活了,可以传入ArrayList、LinkedList等等,这样从而降点耦合了。
同意楼上 小的项目完全可以直接对接实现类.
我开发过的项目都比较小。
这个就是重点,项目小的话为了快速开发和响应需求,是没必要搞那么多接口
如果你在一个大项目中待一段时间的话,你就能真正体会到好处,
(类之间通信简单易懂,扩展性好,提高复用性,扩展性,松耦合)
dao么。。。好测试业务逻辑啊。。。倒时候测试业务逻辑的时候一mock,全都搞定了啊。。。
已解决问题
未解决问题}

我要回帖

更多关于 java 接口用处 的文章

更多推荐

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

点击添加站长微信