use*_*272 5 java oop design-principles
在OO组件中,当您只有一个实现可用于某个类并且该类未"发布"到其他组件时,是否仍然建议使用接口并使用该接口?
我完全了解"编程到接口"的设计原则,并广泛使用它.
最近,我一直在观察,大多数情况下,从不需要不同的实现(尽管可能并且有意义).由于始终使用接口,应用程序代码将具有相当多的接口,每个接口只有一个实现,并且接口似乎是一种开销.
相反,是否最好只使用具体类并仅在需要第二个实现时引入接口?无论如何,现在使用IDE提取界面是轻而易举的.当引入新接口时,可以更改对旧具体类的引用以使用新接口.
你怎么看?
Jos*_*eph 13
其中一个原因我继续程序,即使只有一个实现一个接口是因为它使我的写作测试中很多容易.我可以设置代理来测试我想要测试的任何东西,我不必担心紧耦合.
这并不总是可取的,但是当你想要决定时,这是值得考虑的事情.你认为你需要对这个类/对象进行广泛的测试吗?如果你认为你将会更容易处理界面而不是具体的类.
替代方法是不使用接口和子类化具体类,这也是有效的,但它又取决于它.
为具体类型创建接口是一种微妙的平衡行为,因为您可以轻松创建一个界面爆炸,它不会带来任何好处,只会使域空间与冗余类型复杂化.
我的经验法则是只为那些属于面向公众的API的类型创建接口.所有专用于API实现并且从不从API公开的类型都不需要接口.
据我所知,接口在三种情况下是合理的:
不要害怕使用具体的类。不要为每个类机械地生成一个接口。