gpt4 book ai didi

java - 委托(delegate)+部分覆盖的设计模式名称

转载 作者:行者123 更新时间:2023-11-30 03:05:21 25 4
gpt4 key购买 nike

我发现自己目瞪口呆地试图命名一个具有以下特征的类:

假设 Business 接口(interface)定义了两个复杂的操作:

interface Service {
void doSomething();
void doSomethingElse();
}

第三方提供了部分正确的实现:

final class DefaultService implements Service {
void doSomething() {
// OK
}

void doSomethingElse() {
// KO
}
}

由于扩展不是一个选项,我创建了一个类,将正确的 doSomething() 方法委托(delegate)给 DefaultService ,并拥有自己的 doSomethingElse( ):

final class IDontKnowTheName implements Service {

private DefaultService delegate;

void doSomething() {
delegate.doSomething();
}

void doSomethingElse() {
// Roll new implementation here
}
}

“重写/委托(delegate)”类有名称吗?

  • 不是Adapter因为原始类 DefaultService 已经实现了 Service 接口(interface)
  • 不是 Delegate因为方法被重写了
  • 实际上并不是Decorator要么是因为目标类的某些功能被替换,而不是增强

最佳答案

您可以使用像 DefaultServiceWrapper 这样的名称,它对于委派方法调用没有强烈的影响。

但是,我会选择一个专注于该实现本身执行的操作的名称,而不是它如何委托(delegate)给现有组件。

RollingNewImplementationService(只是开玩笑)是我更喜欢的东西,因为它说明了它的作用并为自己保留了委托(delegate)部分,作为实现细节。

这样,一旦您决定需要替换 doSomething() 方法的原始实现或者找到一种方法,您就不必更改类的名称扩展 DefaultService

关于java - 委托(delegate)+部分覆盖的设计模式名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34942277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com