首页 新闻 会员 周边 捐助

为什么定义对象的一组操作使用的是接口,而不是类

0
悬赏园豆:5 [已解决问题] 解决于 2018-06-02 07:40

为什么定义对象的一组操作使用的是接口,而不是类

或者这样讲,为什么User.java的操作集合定义在 public interface IUserService{} 中,可以定义在 public class UserService{}中么?

我本人在面向对象的设计过程中,操作也都是定义在接口中,但是突然发现这个问题我并不能向别人表述清晰。

也许大家会说,接口有多个实现类,根据不同的需求指定不同的实现类,程序更容易扩展。但这并不能说服我,原因如下,
接口可以有多个实现类,但是接口实例化的时候需要指定具体实现类。
UserService也有多个并行的类,在不同的需求时,选择不同的类,效果也一样。

xiaoyue001的主页 xiaoyue001 | 初学一级 | 园豆:194
提问于:2018-06-01 16:31
< >
分享
最佳答案
1

接口是规范、约束; 规定了实现类必须实现接口定义的方法;
通常一个项目是多个开发人员协同完成,有架构人员先定义好主要的业务接口;
比如说Map接口;如果不用接口;有可能HashMap里面添加元素是put方法,然后HashTable里面添加元素是add方法,你觉得这样好吗?
对于使用者而言,某个类实现了一个接口, 你就知道他拥有这个接口的功能;

收获园豆:5
、熙和 | 小虾三级 |园豆:1508 | 2018-06-01 18:06

在您的回复中我了解到:在团队协作开发时,接口用于约定方法的命名,在设计阶段使用。这对我很有用,这里先结贴,分数给您哈。使用接口是否还有其它实际的优点我希望能够继续挖掘。

谢谢您的回复,我将完善我的问题继续提问,希望您继续关注。

xiaoyue001 | 园豆:194 (初学一级) | 2018-06-02 07:38
其他回答(4)
0

对。但接口更简单,而且更灵活,比如多重继承。

如果过程处理逻辑往往就不会那么了,因为必然要有过程实现调用 待实现的过程。

花飘水流兮 | 园豆:13617 (专家六级) | 2018-06-01 16:41
0

接口可以有多个实现类,但是接口实例化的时候需要指定具体实现类。

========>>>>需求变化时,需要换个具体实现类,这就需要修改代码,这就需要重新编译代码,这就需要重新部署程序,,,,。

 

百度:设计模式 工厂模式 策略模式

百度:控制反转 依赖注入

西漠以西 | 园豆:1675 (小虾三级) | 2018-06-01 16:52
0

我的理解时 这样的:

1》接口时更灵活的 , java只支持单继承 (extends),支持多实现(implements)

2 》不知道你有没有了解过设计模式,里面第一个就是举例说鸭子的故事,这个故事说明要针对接口编程。至于好处,我的理解是:如果是类的继承 所有继承该类的都会有同样的功能,可是接口就不一样,需要你自己去实现自己的功能。

3 》在实例化的时候,估计也有点区别,这个没找到资料,自己的猜测。

^keepHungry$ | 园豆:516 (小虾三级) | 2018-06-01 16:53
0

你可以想想为什么主板规格写的不是支持安装西数硬盘,而是写支持SATA接口。

爱编程的大叔 | 园豆:30844 (高人七级) | 2018-06-01 17:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册