new-关于接口的理解,还有哪些不足的地方。。

问题描述

关于接口的理解,还有哪些不足的地方。。
  1. 是这样,楼主本人刚学Java的时候,看到抽象类与接口,感觉很不理解,时常为两者的业务场景纠缠不清.
  2. 后来在网上百度,七嘴八舌,要么只是说一些语法上的不同,要么就是提一些不痛不痒的例子,比如什么学生类,老师类实现人的某项功能balabala...
  3. 其实我个人觉得刚开始还是从代码层面上说话更能让人理解。
  4. 关于抽象类,在实际应用中我更喜欢把它当做“模板”来使用,抽象类的好处就是,一半事情,父类替你做了,OK,子类直接调取;另一半事情留给子类自己去实现,相比较于接口,它的子类不太适合作为一个参数进行传递。
  5. 关于接口,什么称呼都有。。。
  6. 我个人理解的接口是这样:
  7. 提高某个数据类更“灵活”,如果把抽象类的继承关系比作垂直,那么接口就相当于把这个数据类型在水平方向进行延展;
  8. 可以直接使用此匿名实例,或者用句柄接收此实例作为参数进入方法栈;
  9. 使某个两或者多个个平行关系的实现类产生关联;
  10. 解耦,这意味着啥,通过接口,可以减少重复代码,越是越大的项目越是能体现出接口的威力。
  11. 关于接口的嵌套,这个情况有,但是不多,楼主也只是在为数不多项目里发现过一次。
  12. 抽象类与接口各有各的好处,反正没啥不能new的,还是看需求走向,与业务原则。
  13. 最后楼主可能在某些点说的不是很完全,请大家多多指教,献丑了。。。

解决方案

个人觉得楼主对于抽象类的理解是比较准确的。抽象类其实并不是一种“抽象”(有点绕嘴),而更类似一种“公共实现”。因此在面向对象设计中,抽象类的重要性比不上接口。个人觉得抽象类更类似于一种实现细节。

而接口这是真正的“抽象”。将一组相关的属性/操作提取出来供调用者使用。从而使得调用者和实现者解耦。
实际工作中经常出现的情况是,调用者C(已存在),需要执行功能A;实现者O,支持功能A,但是还做了一大堆其他事情。这时候吧功能A提取出来,做个接口,然后让C通过接口A调用O,这样需要换个P来实现A功能的时候就可以直接换掉O,而不用再修改C了。

解决方案二:

很简单,价值观不同。网上你看到大多数人其实都是码畜,这些人仅限于完成任务,编写粗制滥造的程序,这种价值观决定了他们的思维,用什么东西能做什么不能做什么。

回应这些低端代码工最简单的办法就是告诉他们,从一种编程语言中拿走接口、抽象类等语法特性,这种语言所能做的事情一件也不会少——只要它仍然是图灵等价的,那么它就能完成一切编程任务。

还有一些是学生党,这些人毫无编程经验,专门捣鼓一些似是而非的术语和所谓的“心得”,这些“心得”好一些的是他们自己在几次调试中观察了一些现象后胡思乱想出来的,糟糕一点的是以讹传讹或者胡编乱造。总之他们的出发点和落脚点都和编程无关。

你知道你被这些人打败的原因是在他们的价值观和世界里的法则根本和我们不同。比如说他们会从没有接口如何如何去讨论接口的用处。或者从JRE实现接口和实现继承类的手段有什么不同来比较两者。你和他们讨论你就输了。

好比你拥有了汽车,你去和一个买不起汽车的穷人讨论汽车有什么用。他会告诉你汽车能办到的事情他走路都能办到,或者汽车多么费油还会出交通事故一样。

解决方案三:

去看设计模式把 推荐《Head First设计模式》

时间: 2024-11-02 12:43:46

new-关于接口的理解,还有哪些不足的地方。。的相关文章

对IDisposable接口的理解

本人最近接触一个项目,在这个项目里面看到很多类实现了IDisposable接口.在我以前的项目中都很少用过这个接口,只知道它是用来手动释放资源的.这么多地方用应该有它的好处,为此自己想对它有进一步的了解,但这个过程远没有我想象中的简单. IDisposable接口定义:定义一种释放分配的资源的方法. .NET 平台在内存管理方面提供了GC(Garbage Collection),负责自动释放托管资源和内存回收的工作,但它无法对非托管资源进行释放,这时我们必须自己提供方法来释放对象内分配的非托管资

对C++和Go语言中接口的理解

一直对接口没有什么概念,感觉接口就是C++中的多态.个人理解,接口的作用就是让外部调用者不用关心这个类的类型,让公用的逻辑可以重用. 一个例子: 我们说燕子会飞,会喝水.按照一般的写法,我们需要定义一个燕子的类,然后写了会飞的函数.假设有这么个流程,燕子飞到河边,喝水.这个过程中要用燕子类的指针调用.这个过程没问题,能很快搞定. 没过多久,PM需要加功能(你懂的),我们要写个鸽子飞到河边,喝水.鸽子的飞法和喝水方法与燕子自然不同.鸽子类必然要重写.但是飞到河边,喝水.这个流程能不能复用呢.因为如

深入理解Java的接口与抽象类_java

对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为:    abstract void

伯伯菜园系列 之 “接口”白菜

前言 相信大家对接口是不陌生的,但是你真的理解什么是接口吗?真的能用好吗?我们口口声声说按接口 编程,到底如何接口编程呢?接口编程的意义在哪呢?...对于接口的迷茫,经常在三层结构里面看到的 ,千篇一律的把每一个Dao都写一个接口,每个Service再写一个接口,因为他们看的例子就是这样的,网 上很多例子都是这样的,这就叫按接口编程了?!心里没底,到下次自己写项目自己设计的时候再加上赶 进度怕是没这么勤奋的复制粘贴了,原因还是没有明白接口到底有什么用!甚着感觉接口这玩意就像脱裤 子放屁--多此一

农民伯伯 谈 接口 [interface]

前言      相信大家对接口是不陌生的,但是你真的理解什么是接口吗?真的能用好吗?我们口口声声说按接口编程,到底如何接口编程呢?接口编程的意义在哪呢?...对于接口的迷茫,经常在三层结构里面看到的,千篇一律的把每一个Dao都写一个接口,每个Service再写一个接口,因为他们看的例子就是这样的,网上很多例子都是这样的,这就叫按接口编程了?!心里没底,到下次自己写项目自己设计的时候再加上赶进度怕是没这么勤奋的复制粘贴了,原因还是没有明白接口到底有什么用!甚着感觉接口这玩意就像脱裤子放屁--多此一

HTTPS接口加密和身份认证(转)

HTTPS接口加密和身份认证 对HTTPS研究有一段时间了,在这里写下一些收集的资料和自己的理解.有不对的地方希望斧正. 1.为什么要使用HTTPS代替HTTP 1.1HTTPS和HTTP的区别 https协议需要到CA申请证书,一般免费证书很少,需要交费. http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443. http的连接很简单,是无状态的:HTTPS协议是由SS

java接口的应用举例

/* 接口的理解: 接口就是前期定义一个规则!某一个类A,为了扩展自身的功能,对外提供这个接口,后期只要是符合这个接口(规则) 的类(这个类是接口的子类),将子类对象的引用传递给类A中方法(方法中的参数就是该子类所实现的接口), 就可以和类A建立功能联系!降低了类与类之间的耦合性! */ //定义规则 interface USB{     public abstract void open();     public abstract void close(); }   //实现规则 //通过接

物联网设备安全1.2 使用网站接口控制照明

1.2 使用网站接口控制照明 理解底层技术架构是发现安全漏洞的一个好方法,而用例分析又是其中的最佳途径之一.调色照明系统最基本的用例是通过网站接口,在线注册一个账号,并将网桥链接至该账号下.一旦完成注册,用户就能够使用她的账号远程控制照明.本节,我们来看看系统是如何将用户账号与网桥关联起来的,以及如何在网站上控制照明.当我们明白了这一用例设计的实现原理之后,就会讨论相关的安全问题,以及如何利用这些安全漏洞. 首先,每个用户都必须在调色照明门户网站上注册一个免费账号,如图1-2所示.注册时,用户需

[转]李战大师-悟透delphi-第四章 接口

第四章          接口 前不久,有位搞软件的朋友给我出了个谜语.谜面是"相亲",让我猜一软件术语.我大约想了一分钟,猜出谜底是"面向对象".我觉得挺有趣,灵机一动想了一个谜语回敬他.谜面是"吻",也让他猜一软件术语.一分钟之后,他风趣地说:"你在面向你美丽的对象时,当然忍不住要和她接口!".我们同时哈哈大笑起来.谈笑间,似乎我们与自己的程序之间的感情又深了一层.对我们来说,软件就是生活. 第一节 接口的概念"