构建器模式VS我的实现

本文关键字:我的 实现 VS 模式 构建 | 更新日期: 2023-09-27 18:02:12

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

我最后做的是让我的日志类接受一个类型为"log"的对象。这个"日志"类包含所有需要的参数和相应的属性来获取/设置它们。当然,所有的参数都是用默认值初始化的。

一旦将"log"对象传递给我的主日志类,它就会从"log"对象中提取值并执行打印到文件。

我的问题是-我现在应该把它改成建造者模式吗?(我刚刚在《Effective Java 2nd edition》这本书中学到)。

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

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

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

构建器模式VS我的实现

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

你绝对可以在你的情况下使用Builder模式。以下是一些指导原则:

  1. 首先决定Log对象有多少属性是强制性的(比如x数字),有多少属性是可选的(y)。

2。从log对象中删除y属性,并通过"add"方法将其放入Builder类中。

  1. 如果x<6,从日志类中删除x属性,将它们放在Builder类的构造函数中。现在你可以去掉Log类了

  2. Else,如果x>=6,将它们保存在log类中,并在Builder类的构造函数中传递该类。这也叫做"Transfer Object"

你可以随意改变决定数字6。通常,包含6个或更多形参的构造函数可读性较差。

您是否有一个具有许多参数的构造函数,其中许多参数是相同类型的?建设者。

您是否有许多构造函数,其中它们之间的区别是最小的?建设者。

你是否有一个初始化的类,其中一个构造函数调用另一个构造函数,遵循一个链式结构?建设者。

相关文章: