gpt4 book ai didi

c# - 构建器模式 VS 我的实现

转载 作者:行者123 更新时间:2023-12-01 13:00:43 25 4
gpt4 key购买 nike

我必须构建一个日志记录 dll 程序集,它将使用大量可选参数,大约有 20 个。它是用 C# 编写的。

我最终做的是让我的日志记录类接受“log”类型的对象。这个“日志”类包含所有需要的参数以及获取/设置它们的相应属性。当然,所有参数都首先使用默认值启动。

将“log”对象传递给我的主日志记录类后,它就会从该“log”对象中提取值并执行打印到文件。

我的问题是 - 我现在应该将其更改为构建器模式吗? (我现在刚刚在《Effective Java 第 2 版》一书中学到)。

我可以看到这种模式相对于使用十亿个参数调用 Ctr/Methods 的优势,但我也认为传入包含所有参数的新对象也不错。

你能解释一下我是否真的应该改变我的设计以及为什么?

由于这是一个设计问题,我没有提供任何代码输入。如果我需要发布一些代码,请告诉我。

最佳答案

使用设计模式没有强制规则。但如果应用于正确的用例,它会让生活变得更简单。

您绝对可以在您的情况下使用构建器模式。以下是一些准则:

  1. 首先决定 Log 对象有多少属性是必需的(比如 x 数),以及有多少属性是可选的(y)。

2.从日志对象中删除 y 属性,并通过“add”方法将其放入您的 Builder 类中。

  1. 如果 x<6 ,则从 log 类中删除 x 属性,并将它们放入 Builder 类的构造函数中。现在您可以摆脱 Log 类本身。

  2. 否则,如果 x>=6,则将它们保留在日志类中,并在 Builder 类的构造函数中传递该类。这也称为“传输对象”。

您可以根据需要更改决定数字 6。通常,包含 6 个或更多参数的构造函数的可读性会降低。

关于c# - 构建器模式 VS 我的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23533146/

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