Welcome

首页 / 软件开发 / 数据结构与算法 / 由面向接口思想想到的“泛接口(非泛型接口)”思想

由面向接口思想想到的“泛接口(非泛型接口)”思想2016-03-12 cnblogs 眼神与背影面向接口思想

自从我们开始接触面向对象编程,随着不断的学习,都会逐渐了解接口的含义,面向接口编程强调“定义”与“实现”的分离,我认为其本质就是“解耦两个对象的依赖关系”,最常听别人说起的想必就是“依赖倒置原则”的那两句经典的话:

高层模块不应该依赖于底层模块,两者都应该依赖于抽象 抽象不依赖于细节,细节依赖于抽象

不知道你们什么感受,反正只要提到接口这两句话我是经常听。虽然简短两句话,但都是实践总结出来的,是软件设计必须遵守的原则之一,否则一旦需求变化你的系统可能就要面临大规模重写,若要碰上不断变化的需求,恐怕你就要崩溃了。关于面向接口的详细知识,自己百度之,此处就不再赘述。

"泛接口"思想

话说前段时间某公司一直在说泛安全,说不能仅把安全局限于杀毒软件方面,要推广到整个行业。我觉得这个概念挺有想法的,突破传统安全升华到了更高的层次。那么什么是“泛接口”呢,我认为它不同于一般意义上的接口偏重于具体实现,而是上升到设计层面的一种思想,与一般接口的本质相同,“泛接口”的核心是“解耦”或者“自由互通”,体现在代码实现层面就比如各种设计模式、Spring等,解耦对象之间的依赖关系,否则会严重降低系统的维护性与扩展性;体现在数据库层面就比如用中间表(或者叫映射表)来解耦表与表的多对多关系,否则表信息与表关系严重糅合在一起,造成大量数据冗余;体现在ORM上就比如用配置文件来解耦对象与数据库表的对应关系(也可以用注解的方式)。还有MVC中URL与Action之间的路由机制,等等等等,类似这样的应用场景还有很多就不一一举例了,我们发现,以上场景中涉及到的两个“对象”之间是互不依赖的,因为都采用了某种手段将一方灵活的转换为另一方,正因为这种“解耦”或者“自由互通”的在各个地方都有使用,因此将其进行抽象,就得出了“泛接口”思想。说到这里恐怕你还是云里雾里,尼玛它到底是什么啊,好吧,上图(这张图不一定合理,自己瞎画的,各位就凑合着看吧,哈哈):