关于接口存在的意义,之前有一篇帖子讨论过(http://www.iteye.com/post/957921?page=1),并且跟帖无数,我也看过,这里发表一点自己的看法。抛砖引玉。
我的立场是站在spring的依赖注入的角度上来思考这个问题的。个人认为,接口存在的意义只在于接口依赖注入的时候得到淋漓尽致的体现。至于其他时候,作用则并不是那么大了。其理由如下:
1.
在非接口注入的情况下,接口的定义,某种程度上可以理解为对类的一个总的设计,因为其方法并不需要实现,所以可以更多的去思考业务上的逻辑问题,一方面更
多心思的去想如何把功能点设计的更加全面,另一方面当我们在实现这个接口的时候,就会受到这个接口的方法定义的约束,这个时候尽可能多的就是考虑如何实现
具体的业务的问题,而不用去考虑业务的设计的是否周全的问题。
2.
我的第二点略带否定第一点的意味。如果说只是起一个总领的作用的话,相信当初在设计这个类的时候的UML图里面就已经写的很详细了。即使我不需要这一个接
口,我根据我设计完备的UML图,我一样的可以在写类的方法的时候只关注我的类的方法的实现,而不用去考虑类的方法设计是否完备。
3.
在spring的接口注入的时候,这个时候方才体现了接口的优势。我们只调用接口,接口的具体实现可以有一个,也可以有N个,但是具体调用哪一个实现,我
们可以动态的根据配置文件,在具体运行的时候再来决定。这就相当于用调用接口,把更多的灵活性留给了以后的开发和维护,以及功能模块的添加。
分享到:
相关推荐
依赖注入的类型 Bean的配置 …IOC:控制反转依赖注入。它使程序组件或类之间尽量形成一种松耦合的结构,开发者在使用类的实列之前,需要先创建对象的实列。而IoC是将创建实列的任务交给了IOC容器,这样在开发应用...
Einigeln.js Einigeln 是一个最初为 NodeJS 执行“依赖注入”或“控制反转”的库,其灵感来自其他一些库,如或 。 与其他库的不同之处在于,这个库的目标是: 如果发生任何无效的事情,就会抛出错误。 服务的延迟...
带装饰的依赖注入 组织层次。 (HttpClient,DataProvider,Controller,Mapper,Cache ...) 实用程序类。 大多数依赖项都使用包含实用程序类的接口。 因此,您可以编写自己的实现或使用默认实现。 动机 主要动机...
我们还使用了依赖注入和单元测试等技术,以降低代码的耦合度和提高代码的质量。 总之,我们的电商后台管理系统源码基于Node.js和Vue.js,采用了一系列先进的技术和框架,以提供高效、可扩展和可靠的电商后台管理...
代码可以仅依赖于此接口,并且可以从调用方注入实际的日志记录实现。 理想情况下,只有main()知道正在使用哪种日志记录实现。 与Dave的想法不同 主要区别在于: Dave基本上建议使用fmt.Printf()来fmt.Printf()日志...
Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...
答:控制反转和依赖注入是spring的两大基础作用。主要是将所有组件在spring提供的外部容器中加载。提高安全性,减低耦合性,使各个框架或者类之间的依赖性降低。 什么是声明式的事务管理?为什么要用?spring如何实现...
软件测试规范 目 录 一.概述 ...............................................................................................................................................................
另外初学者要具备单片机I/O接口的应用知识,这在于周边应用电路及各种元器件的使用,须配合自己所学的电子学及电路学等。 14. 符合44PIN的80系列8位单片机的MCU有哪些? 答:符合44PIN的80系列8位单片机有Z...