fbpx
维基百科

接口模式

在系统的设计时刻常常遇到这样一个问题:Client的实例instanceClient希望使用另一个对象instanceX提供的服务service,但在设计时刻并不能确定对象instanceX究竟属于哪个类。常见的解决办法是:将对象instanceX提供的服务service抽象为一个接口ServiceProvider,然后让对象instanceClient通过持有接口ServiceProvider的实例来使用服务service。这种通过接口间接获得服务的解决方案就是接口模式

接口模式还可以有一些变化的形式:不止用一个接口抽象一个对象提供的服务,还可以用一组接口抽象一群对象的交互。

效果 编辑

接口模式有如下效果:

  • 类Client不直接依赖于任何实在(concrete)的服务提供者,而仅仅依赖于轻量的接口,这样就降低了系统的耦合程度。
  • 因为接口将服务独立出来,服务的提供者就可以变化。
  • 因为引入了接口来间接提供服务,所以设计方案变得更加复杂。

评论 编辑

接口模式直接体现了面向对象设计的原则之一:“针对接口编程,而不是针对实现编程”。

许多其他的模式都应用了接口模式,只不过更为特殊。下表列出了作为接口模式特例的其他模式,并且指明了这些模式将哪些服务抽象为接口。

模式 抽象为接口的服务
代理模式 对对象的访问
抽象工厂模式 创建对象家族
生成器模式 创建多个对象的组合
工厂方法模式 对象的实例化
原型模式 对象的实例化
单例模式 类的唯一实例的创建
命令模式 对请求的处理
迭代器模式 对成员的遍历
观察者模式 因目标(Subject)发生变化而作出反映
状态模式英语State pattern 状态与状态的变化
策略模式 算法、策略
访问者模式 作用于一组对象上的操作

接口模式, 在系统的设计时刻常常遇到这样一个问题, 类client的实例instanceclient希望使用另一个对象instancex提供的服务service, 但在设计时刻并不能确定对象instancex究竟属于哪个类, 常见的解决办法是, 将对象instancex提供的服务service抽象为一个接口serviceprovider, 然后让对象instanceclient通过持有接口serviceprovider的实例来使用服务service, 这种通过接口间接获得服务的解决方案就是, 还可以有一些变化的形式. 在系统的设计时刻常常遇到这样一个问题 类Client的实例instanceClient希望使用另一个对象instanceX提供的服务service 但在设计时刻并不能确定对象instanceX究竟属于哪个类 常见的解决办法是 将对象instanceX提供的服务service抽象为一个接口ServiceProvider 然后让对象instanceClient通过持有接口ServiceProvider的实例来使用服务service 这种通过接口间接获得服务的解决方案就是接口模式 接口模式还可以有一些变化的形式 不止用一个接口抽象一个对象提供的服务 还可以用一组接口抽象一群对象的交互 效果 编辑接口模式有如下效果 类Client不直接依赖于任何实在 concrete 的服务提供者 而仅仅依赖于轻量的接口 这样就降低了系统的耦合程度 因为接口将服务独立出来 服务的提供者就可以变化 因为引入了接口来间接提供服务 所以设计方案变得更加复杂 评论 编辑接口模式直接体现了面向对象设计的原则之一 针对接口编程 而不是针对实现编程 许多其他的模式都应用了接口模式 只不过更为特殊 下表列出了作为接口模式特例的其他模式 并且指明了这些模式将哪些服务抽象为接口 模式 抽象为接口的服务代理模式 对对象的访问抽象工厂模式 创建对象家族生成器模式 创建多个对象的组合工厂方法模式 对象的实例化原型模式 对象的实例化单例模式 类的唯一实例的创建命令模式 对请求的处理迭代器模式 对成员的遍历观察者模式 因目标 Subject 发生变化而作出反映状态模式 英语 State pattern 状态与状态的变化策略模式 算法 策略访问者模式 作用于一组对象上的操作 取自 https zh wikipedia org w index php title 接口模式 amp oldid 65211408, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。