Dav*_*ave 6 java oop interface
使用jmock时,如果设置类imposteriser,则可以模拟具体类.我注意到类imposterizer在遗留包中,所以我真的不想使用它(特别是因为在我的IDE中使用重构工具提取界面非常容易).我不喜欢具体类的实例变量.
然而,在提取界面时,我注意到我的代码库中出现了一种模式.很多时候接口只有一个实现具体类.我更喜欢尽可能使用接口,但拥有所有这些额外文件似乎非常冗长.此外,每次我想要向类中添加新方法时,更新界面并更新实现者都有点繁琐.
这只是你为正确的抽象付出的代价,还是有一种我没想过的更好的方法?即使接口中唯一的东西是getter/setter,所有类都应该实现接口吗?
Jon*_*eet 10
如果界面只是getter和setter,那听起来更像是数据而不是行为 - 并且听起来不像我会嘲笑的东西.我很乐意在其他类的测试中直接使用简单的生产代码.我只为提供服务的类注入依赖项.
我觉得你的痛苦,但我个人不还是写的界面,即使是目前唯一一个生产实施.我常常会在嘲笑一段时间后发现我写了一个存根或伪造的实现.假货能最终被相当容易使用(导致更清晰的测试),除非你在测试真正感兴趣的交互调用者和服务之间.
这也意味着,当有人想看看一个特定的依赖提供了方法,他们可以看到刚才的界面,没有参与实施.
我要点的一些一般观点:
这些要点有望帮助您制作更简单,更易测试和可维护的设计.至少经过一些尝试跟随他们的经验.