1
1
使用“适配器”模式-而不是 one 维基百科识别,所以也许我的术语是非标准的,但就像Java的 MouseAdapter :
只需编写一个抽象类,其中包含所有必需接口的空实现;对其进行子类化并重写与您的需求相关的方法。 完整的胖接口仍然存在;它仍然由您的类实现(通过继承)-但是您的类的代码将只包含重要的内容。 |
2
2
您不一定需要提供工作实现。在您的示例中,您的ipreferencesReader似乎不需要istartstop,因此您可以简单地删除其中的包含内容吗? 如果要从实现类型中隐藏接口方法(即,在PreferencesReaderBase对象中看不到它),可以显式实现接口:
然后,您只能通过将您的PreferencesReaderBase引用强制转换为IStart引用来调用这些接口方法。 |
3
2
我想你需要研究一下为什么你不能打破你的界面继承权。您说继承权是必要的,但是有些类不需要实现所有的方法。这意味着不需要继承权! 如果IPreferencesReader不需要实现M1方法,那么它实际上不是IStart。它订立的合同是无效的。 记住,类可以继承多个接口。假设您打破了继承继承关系,那么如果preferrencesreaderbase确实是IStop,但不是IStart,则可以将其声明为:
如果出于任何原因您真的不能拆分这个接口,您可以考虑拆分实现类。
这样至少可以保持主要功能类的整洁。每个班都做一件事,所以 Single Responsibility Principle 保持。 Fat接口类是一个框架类,在开发迭代过程中可以基本上保持原样。 |
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 2 年前 |
Justin · Python自属性重命名 6 年前 |
Sabutobi · 长dict属性行的重构 6 年前 |
Falco Alexander · 简单LINQ重构/样式 6 年前 |
05bs001 · Euler 12需要优化 6 年前 |
slartidan · 如何将lambda表达式重构为方法引用? 6 年前 |
Alex · 在Java类中频繁使用与映射键相同的字符串[已关闭] 7 年前 |