我发现自己愚蠢地试图命名一个具有以下特征的课程:
假设Business
接口定义了两个复杂的操作:
interface Service {
void doSomething();
void doSomethingElse();
}
第三方提供了部分正确的实施:
final class DefaultService implements Service {
void doSomething() {
// OK
}
void doSomethingElse() {
// KO
}
}
由于扩展不是一个选项,我创建了一个代表DefaultService
正确的doSomething()
方法的类,并且有自己的doSomethingElse()
实现:
final class IDontKnowTheName implements Service {
private DefaultService delegate;
void doSomething() {
delegate.doSomething();
}
void doSomethingElse() {
// Roll new implementation here
}
}
是否有“覆盖/委托”类的名称?
答案 0 :(得分:1)
您可以使用DefaultServiceWrapper
这样的名称,这对于委派方法调用没有太大的影响。
但是,我会选择一个名称,专注于该实现本身的功能,而不是它如何委托给现有组件。
RollingNewImplementationService
(开玩笑)将是我更喜欢的事情,因为它会说明它的作用并保持代表团自身的作用,作为实现细节。
这样,一旦您确定需要替换doSomething()
方法的原始实现或者您找到扩展方法的方法,您就不必更改类的名称DefaultService
。
答案 1 :(得分:1)
设计模式的关键在于它们是常见问题的可重用解决方案。人们在类名中使用设计模式名称的原因是,用一个词可以传达很多关于这个类试图解决的问题。
现在,你的班级试图解决什么问题?它提供了Service
接口的正确实现。这就是您的实现与DefaultService
的不同之处。我认为你的类名应该强调,而不是用来实现这一目标的技术。
所以我称之为CorrectService
。