我必须构建一个日志dll程序集,它将使用大量可选参数,大约20个。它是用c#编写的。
我最终要做的是让我的日志记录类接受“log”类型的对象。此“log”类包含所有需要的参数以及获取/设置它们的相应属性。 当然,所有参数都首先使用默认值启动。
将“log”对象传递给我的主日志记录类后,它会从该“log”对象中提取值并执行打印到文件。
我的问题是 - 我现在应该将其更改为构建器模式吗? (我刚刚学习它 - “Effective Java 2nd edition”一书)。
我可以看到这种模式对使用十亿个参数调用Ctr / Methods的优点,但我也认为传入一个包含所有参数的新对象并不错。
你能解释我是否真的应该改变我的设计以及为什么?
由于这是一个设计问题,我没有提供任何代码输入。如果我需要发布一些代码,请告诉我。
答案 0 :(得分:1)
使用设计模式没有强制性规则。但如果应用于正确的用例,它会使生活更简单。
你绝对可以在你的情况下使用Builder模式。以下是一些指导原则:
2.从日志对象中删除y属性,并将其放入Builder类中,然后添加"添加"方法
如果x <6,则从日志类中删除x属性,将它们放在Builder类的构造函数中。现在你可以摆脱Log类本身了。
否则,如果x> = 6,请将它们保存在日志类中,并在Builder类的构造函数中传递该类。这也称为&#34;转移对象&#34;。
您可以根据需要更改决定号码6。通常,包含6个或更多参数的构造函数的可读性会降低。
答案 1 :(得分:0)
你有一个带有许多参数的构造函数,其中许多参数类型相同吗?去建设者。
你有很多构造函数,它们之间的差异很小吗?去建设者。
你是否有一个类被初始化,其中一个构造函数调用另一个构造函数,遵循类似链的结构?去建设者。
否则,做你自己的事。