更新时间:2022-08-25 16:45
在系统的设计时刻我们常常遇到这样一个问题:类Client的实例instanceClient希望使用另一个对象instanceX提供的服务service,但在设计时刻我们并不能确定对象instanceX究竟属于哪个类。常见的解决办法是:将对象instanceX提供的服务service抽象为一个接口ServiceProvider,然后让对象instanceClient通过持有接口ServiceProvider的实例来使用服务service。这种通过接口间接获得服务的解决方案就是接口模式。
接口模式还可以有一些变化的形式:不止用一个接口抽象一个对象提供的服务,还可以用一组接口抽象一群对象的交互。
接口模式有如下效果:
接口模式直接体现了面向对象的系统设计的原则之一:“针对接口编程,而不是针对实现编程”。
许多其他的模式都应用了接口模式,只不过更为特殊。下表列出了作为接口模式特例的其他模式,并且指明了这些模式将哪些服务抽象为接口。
在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算器科学的。
设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类别或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。
并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其他非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。
随着软件开发社群对设计模式的兴趣日益增长,已经出版了一些相关的专著,定期召开相应的研讨会,而且沃德·坎宁安(Ward Cunningham)为此发明了WikiWiki用来交流设计模式的经验。