gpt4 book ai didi

java - 在 Java 中,你如何称呼这种模式/习惯用法?

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

我的 Java 库提供了一个接口(interface) SomethingClient 和一个实现类 SomethingClientImpl。正如您所期望的,该接口(interface)包含应用程序将调用的方法。

但是有一个“镜像”接口(interface)SomethingHandler,其中包含应用程序提供的方法 - 应用程序回调。您可以想象应用程序向库提供此接口(interface)的一个对象 - 可能是从中获取 SomethingClient 的工厂方法。

作为一个没有经验的 Java 设计者,我有兴趣知道是否有一个名称,以及是否/在多大程度上推荐,以提供结合这两个概念的接口(interface)和类:

public interface SomethingClient { /*..*/ }

public interface SomethingHandler { /*..*/ }

public interface ClientAndHandler extends SomethingClient,
SomethingHandler { }

public abstract class ClientAndHandler_Impl implements ClientAndHandler {

final SomethingClient clientImpl_;

ClientAndHandler_Impl(SomethingClient clientImpl) {
this.clientImpl_ = clientImpl;
}

// TODO now all SomethingClient methods are implemented in terms of clientImpl_
// AND, SomethingHandler methods are left abstract so they are implemented by the application
}

其目的是,应用程序编写者可能更愿意从 ClientAndHandler_Impl 抽象类扩展并实现回调方法,也许是根据客户端(传出)方法。这可以相对容易地完成。假设您要这样做,您会给 ClientAndHandler 概念起什么名字?

最佳答案

骨架实现

您当前的代码看起来有点像骨架实现。您可以在massachusetts institute of technology上阅读更多相关信息。或点击dzon .

其背后的想法是为客户端提供默认实现。您可以在 Java-Collections-API 中找到一些示例,例如 AbstractCollectionAbstractSetAbstractMap

一些建议

冗余接口(interface)

接口(interface)ClientAndHandler是多余的。类 ClientAndHandler_Impl 应该实现 SomethingClientSomethingHandler

命名

如果您想明确使用骨架实现,我会将抽象类 ClientAndHandler_Impl 命名为 AbstractClientInteractionClientInteractionSkeleton

关于java - 在 Java 中,你如何称呼这种模式/习惯用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54582544/

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