Sid*_*war 8 oop design-patterns packages
我正在阅读罗伯特·C·马丁的一篇文章,并在一个地方给出了一个这样的例子:
第一张图显示两个包之间存在循环依赖关系.要删除此依赖项,将在第二个映像中添加新接口.B实现接口,Y使用它.马丁提出以下观点:
接口通常包含在使用它们的包中,而不是在实现它们的包中.
我的问题是,我们为什么要这样安排接口?这种方式包装接口背后的原因是什么?根据Common Closure Principle,一起改变的类应该保持在一起.在变化方面,接口是否更接近其实施者或其用户?

从技术上讲,用户并不比实现者更接近界面.在变化方面,当界面发生变化时,都需要改变.
但是,界面为什么会改变?
用户调用接口,因此它可以独立于任何可用的实现者.因此,界面的定义取决于用户的需求.
当用户指定接口的定义时,如果用户不需要接口,则无需更改接口.需要更改接口以适应实现的实现者应该发送红色标记.为什么它需要来自用户的更多或不同的信息?对用户有什么用处?
此外,实现者"仅仅"依赖于接口,因为它需要为接口中的每个方法提供实现.但它可以自由地提供空的存根,实质上是向其客户提供NOP.
因此,用户的需求驱动对接口的更改,并且对接口驱动器的更改将更改为实现者.因此,用户在功能上比实现者更接近界面.这是一个很好的例子来声明与用户的接口而不是实现者.
| 归档时间: |
|
| 查看次数: |
836 次 |
| 最近记录: |