论坛首页 Java企业应用论坛

请教:关于接口的设计

浏览 70860 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-03-01  
我比较习惯于先定义接口,然后写一个抽象类类实现通用的操作,专用的操作定义为抽象方法,强制继承类实现。这样一般的类就直接继承该抽象类,然后比较特殊的地方实现抽象方法。非常特殊的类就直接实现接口。

我觉得这样用很方便的。
0 请登录后投票
   发表时间:2004-03-02  
经你这么一说
我发现我们的项目也是一个接口都没用哎
看来要好好研究一番了
0 请登录后投票
   发表时间:2004-03-02  
接口和抽象类的使用我觉得List是一个很好的诠释。
List :interface
AbstractList :Abstract  class
ArrayList :Class
如果没有List这个接口,那很多返回类型应该是ArrayList,Vector,LinkedList.但大部分人一般返回类型为List或者Collection 这是有道理的。
类似List 这样的例子其实Java代码里面很多,robbin所说的做法也是如此。

有人甚至认为会使用接口可以认为Java 水平或者面向对象水平有一个标志性的提高,虽然有点偏激但或许有一定的道理。
0 请登录后投票
   发表时间:2004-03-02  
如果没有List这个接口,那很多返回类型应该是ArrayList,Vector,LinkedList.但大部分人一般返回类型为List或者Collection 这是有道理的。

能说说吗?
我并没有从心里接受使用interface设计的必要性,java中interface的存在似乎是解决了不能继承多个父类。还有一个好处是,让oo的概念在java上体现的更清晰了,但是用起来麻烦啊--改得多,比如,我要重命名一个接口,既要改动inteface又要改动class。

我并非说不使用,而是想知道如何合理使用。

另外,即便是返回一个ArrayList 又有什么不好呢?
0 请登录后投票
   发表时间:2004-03-02  
coolyzg 写道
经你这么一说
我发现我们的项目也是一个接口都没用哎
看来要好好研究一番了


你怎么把图标弄成大于80×80的?:)
0 请登录后投票
   发表时间:2004-03-02  
我还是觉得你应该在一个类的方法都比较稳定时进行重构把接口做出来,这样你可以不用边写接口边写类的方法,而且来回改动。
12 请登录后投票
   发表时间:2004-03-03  
sayor 写道
我还是觉得你应该在一个类的方法都比较稳定时进行重构把接口做出来,这样你可以不用边写接口边写类的方法,而且来回改动。

是的,你的说法和QuakeWang比较类似,这又是我打算采用的方法。不过类的方法比较稳定了却已经到了开发中,甚至后期了。

另外觉得,就直接用公用函数也没什么不好啊。比如孤魂一笑所说的返回值的问题,能说说返回一个接口比返回一个实例对象好在哪里吗?
0 请登录后投票
   发表时间:2004-03-03  
可爱的jaqwolf同志,千万不要因为要改代码麻烦就放弃了对好设计的追求,呵呵,学习学习XP吧,XP的关键之一就是重构,对代码进行反复的重构,呵呵,没有一个人会强求你一开始就有好的设计,但是如果不尝试这么做,那么你永远都不会这么做,不是么?
    Robbin说得对,要理解好接口、抽象类、实体类、静态工具类的设计目的及作用,让你的程序更加容易维护,更加容易理解,呵呵
0 请登录后投票
   发表时间:2004-03-03  
我试试看。
谢谢各位。
0 请登录后投票
   发表时间:2004-03-03  
jaqwolf 写道
如果没有List这个接口,那很多返回类型应该是ArrayList,Vector,LinkedList.但大部分人一般返回类型为List或者Collection 这是有道理的。

能说说吗?
我并没有从心里接受使用interface设计的必要性,java中interface的存在似乎是解决了不能继承多个父类。还有一个好处是,让oo的概念在java上体现的更清晰了,但是用起来麻烦啊--改得多,比如,我要重命名一个接口,既要改动inteface又要改动class。

我并非说不使用,而是想知道如何合理使用。

另外,即便是返回一个ArrayList 又有什么不好呢?


我说一种情况吧,有如下一个方法
public Vector getUsers(){


}

你使用Vector 作为容器保存用户列表,后面你发现,你使用
public ArrayList getUsrs(){

}

可能更好,因为不需要线程同步,而且ArrayList 的效率比Vector高,
如果你一开始就使用下面的方法
public List getUsrs(){

}

那么改动的就只是你写的这个方法,对调用这个方法的代码是不需要修改的。
因为我的返回类型是List ,至于是ArrayList ,LinkedList,Vector,甚至是jakarta commons collection的某些类,对外我是没有声明的。在这种情况下你认为返回ArrayList 好还是返回List好呢?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics