黑马程序员技术交流社区
标题:
【已解决】经常说需要面向接口编程,请问到底有什么好...
[打印本页]
作者:
刘芮铭
时间:
2012-8-28 22:35
标题:
【已解决】经常说需要面向接口编程,请问到底有什么好...
本帖最后由 刘芮铭 于 2012-8-29 16:19 编辑
看了张孝祥老师的JAVA高薪技术,交通管理系统等!
经常看见张老说要尽量面向接口编程!
如:List list = new ArrayList();
请问面向接口编程到底有什么好处?
作者:
方志亮
时间:
2012-8-28 22:40
在小项目中,是体验不到的。使用接口编程,易于程序扩展,降低程序耦合性。
举个常用的例子说吧,你有个方法为:public viod doxx(ArrayList arraylist),方法调用时,参数必须为ArrayList对象。某天,当参数需要更换为其他集合类时,必须更改代码;此时如果用接口的话,就不须了;将方法更改为public viod doxx(List list),方法调用时,参数就很灵活了,可以传入ArrayList、LinkedList等等,这样从而降点耦合了。
作者:
谭海鹏
时间:
2012-8-28 23:13
面向接口编程,本人觉得主要就是为了提高程序的扩展性和降低了耦合性。
就像计算机的接口一样,前期计算机刚出来的时候是没有USB接口的,如果要添加一些计算机的设备很麻烦,也巨痛苦。为了解决这类问题,生产计算机的厂商们联合起来制定了USB接口标准,于是USB接口就这样产生了。只要开发的设备符合USB接口原则,至于这些设备是移动硬盘还是USB的鼠标我们不用去关心,插到USB接口上就可以使用。这样就增加了计算机的扩展功能,降低设备和计算机的耦合性。
作者:
乔九
时间:
2012-8-28 23:19
提高扩展性,便于后期维护和升级
作者:
资建文
时间:
2012-8-28 23:23
哦 学习下 也挺好的
作者:
杨鹏鹏
时间:
2012-8-28 23:39
public class Me extends Person implements smoke{
@Override
void eat(){
System.out.println("吃饭");
}
@Override
public void smoke() {
}
}
class Person{
void eat(){
System.out.println("吃饭");
};
}
interface smoke{
void smoke();
}
// 因为抽烟不是人的基础功能 所以定义成父类继承就不合适 定义在父类继承了就变成是人都必须抽烟 所以定义成接口你需要定义person这个类抽烟时你就implements这个接口 就有抽烟功能 而不想继承那样强制性的拥有其父类功能 类与类之间的耦合度降低了
作者:
谭海鹏
时间:
2012-8-29 00:41
/*
结合前面给你讲的大白话再给你举个实例,希望对你有帮助
需求:笔记本电脑与USB设备的运行。
增加笔记本的扩展功能,降低后期设备和笔记本的耦合性。
这时我们会想到什么?接口。
需要先定义好一个规则。
笔记本可以使用这个规则。其他设备可以实现这个规则。
这样笔记本就可以使用符合规则的设备啦!
*/
//定义规则
interface USB
{
public void open(); //打开方法
public void close();//关闭方法
}
//笔记本使用符合规则的设备
class NoteBook
{
public void run() //笔记本电脑运行方法
{
System.out.println("notbook run");
}
public void useUSB(USB u)//USB u = new USBMouse();//接口类型的引用指向了自己的子类对象。
{
if(u!=null){
u.open();
u.close();
}
}
}
//USB鼠标设备,实现接口中的方法
class USBMouse implements USB
{
public void open()
{
System.out.println("usemouse open");
}
public void close()
{
System.out.println("usemose close");
}
}
//USB键盘设备,实现接口中的方法
class USBKey implements USB
{
public void open()
{
System.out.println("usbkey open");
}
public void close()
{
System.out.println("usbkey close");
}
}
//电脑运行
class NoteBookDemo
{
public static void main(String[] arg)
{
NoteBook book = new NoteBook();
book.run();
book.useUSB(new USBMouse());//只需要将USB鼠标插入电脑运行即可
book.useUSB(new USBKey());////只需要将USB键盘插入电脑运行即可
}
}
/*
这样只需要定义好接口,所有USB设备只需要实现接口中的方法,无需知道笔记本电脑内具体是怎样实现的,
比较本定义好以后也不需要去修改,只要将USB设备传入笔记本的USB方法即可。
这样就增加了笔记本的扩展功能,降低设备和笔记本之间的耦合性。
*/
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2