插件式框架作为一个高聚合低耦合的系统,它的功能定义与功能实现之间是分离的,这种策略是高聚合实现的保证。插件式框架好像一个功能聚集站,它对外界宣 布,只要符合它发布的某种规范的组件(实现接口的类通常称为组件)都可以加入到这个平台中,而这些组件到底是做什么事情的,框架并不关心,当然,框架也提 供了一些必要的信息和帮助保证这些组件能够正常实现它们的功能。
桥接模式是一种被认可的表示定义和与之关联的实现的方式,它和工厂(Factory)模式为所有的应用提供了基础。使用桥接模式开发的组件具有为了一个共同目标而多方协同工作除某些必须实现的接口外无需彼此交互的优点。
在具有多个逻辑层的程序设计中,各层之间的通讯大多通过接口实现,由于接口不会轻易改变,如果一个层的代码发生变化,它不会影响其它层的功能;只要实现接口的组件功能正确,那么这个程序运行就更无问题。这种做法使得各层之间的影响降低到最低程度。
接口是类型一般行为的定义和契约。例如交通工具都包含启动、停车、加速和减速等方法,但作为交通工具的具体类型,不同车辆之间的操作是不一样 的。接口并不考虑它们各自采用什么方式实现这些功能,但是,它们都必须有这些基本的功能。接口只负责定义而不考虑实现,我们也不能产生一个接口的实例对象 (Instance)。
实现了接口的类或结构都必须实现接口中定义的每一个方法,这些方法在设计上往往是相关的。
接口与抽象类非常相似,例如两者都不能产生实例对象,都可以作为一种契约和定义使用。但接口和抽象类仍有本质的不同,这些不同包括:
- 抽象类可以包含某些实现代码,但接口没有任何实现部分;
- 抽象类可以包含字段而接口没有;
- 接口可以被结构(Struct)继承,但抽象类不行;
- 抽象类可以有构造函数和析构函数,而接口都没有;
- 抽象类可以继承自其它类和接口而接口仅仅能继承自接口;
- 接口支持多继承而抽象类仅仅支持单根继承。
下面是抽象类和接口的对比例子:
public abstract class AClass { abstract public void MethodA (int a); abstract public void MethodB (int a); abstract public void MethodC (int a); abstract public void MethodD (int a); } public interface IInterface { void MethodA (int a); void MethodB (int a); void MethodC (int a); void MethodD (int a); }