gpt4 book ai didi

oop - 帮助类设计

转载 作者:行者123 更新时间:2023-12-01 13:07:09 26 4
gpt4 key购买 nike

我有一个类必须从一个系统的数据库中获取产品信息并将其保存到另一个系统的产品数据库中。

我将第一个系统中的一个产品称为产品 A,另一个系统称为产品 B。产品 B 的数据取决于用户选择的设置。

因此,产品 B 可能有一个 GetDescriptions 方法,该方法查看用户设置,该设置表明使用产品 A 中的 Description1 变量,或者他们可以选择 Description 2,或者他们可以使用产品 B 中已有的 Description。

这很好,但是有很多设置和获取描述的方法。这就是问题所在,我有很多方法似乎都属于产品 B。像 Ge​​tDescription、GetName、GetSku 等方法都是根据用户设置设置的,并且都依赖于产品 A。

虽然它们似乎都与产品 B 相关,但类变得非常大,我想将一些方法从类中移到另一个类中。我正在考虑使用工厂模式。像下面这样的东西(代码只是一个快速的想法)

public class ProductBuilder
{
public ProductB BuildProduct()
{
SkuBuilder.BuildSku(ProductB,ProductA);
ProductDescriptionBuilder.BuildDescription(ProductB,ProductA);
}
}

我的问题是:什么是好的设计?我上面提出的方法是否可以接受?您认为此设计有任何潜在问题吗?

最佳答案

这是工厂 模式的变体,是一种非常有用的设计形式。您所写的内容表明了一个简洁的三类设计:ProductA 包含仅与 A 相关的方法和属性,ProductB 包含与 B 相关的方法和属性,以及 ProductBuilder 基于 A 构建 B。

唯一的缺陷是一般的 OOP 设计问题。确保 ProductConverter 不依赖于 A 或 B 的内部知识——换句话说,确保 A 和 B 的公共(public)接口(interface)足够丰富以供 ProductConverter 完成其工作。只有 A 应该连接到 A 的产品数据库,只有 B 应该连接到 B 的产品数据库。避免单例和全局状态。这些是您几乎在任何应用程序中都会做的事情,但它们将成为此类系统中的特殊陷阱。

关于oop - 帮助类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2258328/

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