我正在设计一个系统,在该系统中,我得到一堆处理后生成一些持续输出的输入。OO设计:如何在设计对象时决定方法参数与实例变量
说我需要做请求一些验证,我应该做它作为
选项1:
Validator validator = new Validator();
validator.validate(request);
或
选项2:
Validator validator = new Validator(request);
validator.validate();
我我目前使用选项1,因为它更容易将Validator实例注入到我的请求处理程序中类。 假设我需要从Validator调用多个方法,那么使用相同的参数多次调用验证器(对于不同的方法)感觉更具程序性。
一边想着这些之间作出选择,我也想出了一个第三个选项
Validator validator = Factory.createValidator(request);
validator.validate();
在这个工厂注入到我的课。
当决定这些选项时,我应该指导什么。
您可能会发现[Programmers.SE]是将来这类问题的好地方;它旨在用于“白板”问题,而不是“键盘”问题。 –
我不是这方面的专家,但我相信如果你的验证器需要保持关于请求的状态,你应该使用选项2.否则,如果验证器是无状态的,则选项1更有意义。选项1的优点是您只需创建一次'validator'并在任何地方使用它;而选项2则需要在每次新请求需要验证时创建它。 – Amadeus
还有另一种选择,即根本不创建实例,并使其变为静态。 'Validator.Validate(request)'如果方法是完全自包含的并且不需要状态,则可以使用此选项。 –