Builder模式VS我的实现

时间:2014-05-08 05:07:17

标签: c# java design-patterns builder

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

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

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

我的问题是 - 我现在应该将其更改为构建器模式吗? (我刚刚学习它 - “Effective Java 2nd edition”一书)。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

  1. 首先确定Log对象的多少属性是强制性的(比如说x数字),以及有多少属性是可选的(y)。
  2. 2.从日志对象中删除y属性,并将其放入Builder类中,然后添加"添加"方法

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

    2. 否则,如果x> = 6,请将它们保存在日志类中,并在Builder类的构造函数中传递该类。这也称为&#34;转移对象&#34;。

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

答案 1 :(得分:0)

你有一个带有许多参数的构造函数,其中许多参数类型相同吗?去建设者。

你有很多构造函数,它们之间的差异很小吗?去建设者。

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

否则,做你自己的事。