gpt4 book ai didi

java - 使用接口(interface)/继承时重复代码

转载 作者:行者123 更新时间:2023-11-30 07:52:24 25 4
gpt4 key购买 nike

我有一个关于继承的情况,我发现很难找到一个好的 OO 设计。

基本上我有以下情况:

Structure

Webservice 是一个抽象类,它包含所有 web 服务的所有通用功能。然后,大多数 Web 服务分为促销 Web 服务(检索促销数据)或能够检索有关人员的信息(PersonWebservice)。这些也是抽象的,因为它们包含对所有子项都适用的通用实现(在获取数据后考虑额外的处理)。子级仅包含特定于该子级 Web 服务的功能和实现。

到目前为止一切顺利......但是......我有一个网络服务(Webservice E)混淆了整个设计......因为这个网络服务既是个人网络服务又是促销网络服务......据我所知可以看到,在 Webservice 和 Promo/Person web 服务之间放置父类(super class)并不是真正的选择。事实上,大多数 Web 服务的功能都有限,而这个 Web 服务 E 可以做到这两点。

我考虑过使用接口(interface),但我将不得不在子类中多次实现所有通用代码,或者我必须扩展其中一个父类(super class)并复制另一个分支的一半通用代码,这不会对我来说听起来是个不错的设计...

有没有人有什么提示或建议可以解决此类设计/结构问题同时尽可能避免重复代码的好方法?

非常感谢!

最佳答案

想到的典型事情:FCoI - 支持组合而不是继承。

你可以:

  • 创建围绕“核心功能”的接口(interface)
  • 让现有的类相应地实现它们
  • 并且 WebServiceImpl 还实现了该接口(interface) - 通过委托(delegate)到那些其他类的实例

关于java - 使用接口(interface)/继承时重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45981579/

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