基于接口编程

基于接口编程（Interface-based programming）也称基于接口的架构（interface-based architecture），它是一种在没有模块系统的面向对象程序设计语言中的组件层面实现模块化编程的架构模式。符合此例的一个语言是Java，，它没有组件级别的模块系统。Java有一个包（package）系统，但Java软件组件通常由多个Java包组成——并且在任何情况下，接口编程可以提供优于仅使用Java包的优势，即使组件仅由单个Java包组成。

基于接口的编程将应用程序定义为组件的集合，其中组件间的应用程序接口（API）调用可能只通过抽象化接口完成，而没有具体的类。类的实例化一般通过使用如工厂模式等技术的其他接口完成。

这种方式被认为增加了应用程序的模块性并因而增加了。但是，有必要谨慎考虑——仅将应用程序分解成通过接口通信的任意组件本身不能保证低耦合性或高內聚性，这两项通常被认为是可维护性的另外两项关键属性。

当第三方（或同一个组织内的另一个团队）为已建立的系统开发了额外的组件或插件时，可以使用基于接口体系结构。Eclipse IDE的代码库就是基于接口编程的一个例子。Eclipse插件插件供应商只需开发满足父应用程序供应商Eclipse基金会指定接口的组件。在Eclipse中，哪怕“Java开发工具”等原始组件本身也是一个插件。这有点像移动电话制造商制定的移动充电器接口（引脚布局、预期直流電电压等）和，制造商和第三方都制造符合这种标准接口规范的手机充电器。

参见 
 微服務
 演员模型
 CORBA

参考资料 
 C# Interface Based Development , c-sharpcorner.com 
 Interface Based Development – The Unified Modeling Language (UML), devmentor.org
 Architecting a large application with interface-based architecture , rhyous.com
 Understanding Interface-based Programming , 微软开发者网络

软件架构
软件设计模式