从设计角度来看,什么时候最好删除方法参数,而是使用构造函数参数,而方法可以使用已经初始化为构造函数参数的类变量?构造函数参数或方法参数?
2
A
回答
4
当不能使用这些参数完全初始化类的对象时,使用构造函数参数。例如:如果您正在创建Employee类,并且您希望Employee的每个实例都必须有名称,那么您应该在构造函数中使用name作为参数。另一个例子是,你不能创建
File
类,而没有指定要打开的文件的名称。仅在方法上下文中相关的参数应作为方法参数传递。例如,可以在向类
List
添加新项目时使用。这可能会在内部更新对象的状态,但是这就是这个类的工作原理 - 它有内部数据结构来维护列表,方法是用来操纵这些状态的。有时底层框架可能希望您使用setter方法初始化状态。当使用像Hibernate这样的ORM或者在MVC框架(例如Spring MVC)中使用Web表单中的Model对象等POJO Bean时,通常会出现这种情况。在这些情况下,这些类通常代表Value Object,并且一般不会将构造函数中的参数作为框架使用默认无参数构造器实例化对象。可以使用构造函数或使用setter方法注入依赖项。在这种情况下,您应该针对强制性依赖关系使用构造器参数,并使用setter作为可选依赖项 - 尽管没有必要这样做。你可以把它当作指导。
相关问题
- 1. 没有参数的构造函数或参数构造函数
- 2. Java - 方法vs构造函数参数
- 3. 无参数构造函数调用2参数构造函数
- 4. 与构造函数参数
- 5. 从构造函数参数
- 6. 构造函数的参数
- 7. TabStopSpan.Standard构造函数参数
- 8. 构造函数的参数
- 9. 参数类构造函数
- 10. Ninject:构造函数参数
- 11. StructureMap构造函数参数
- 12. 无参数构造函数
- 13. ConcurrentHashMap构造函数参数?
- 14. 无参数构造函数
- 15. swiftsuspenders构造函数参数?
- 16. LinearGradientBrush构造函数参数
- 17. 通过参数化构造函数作为方法参考
- 18. 构造函数参数无法识别
- 19. 从C#中的参数化构造函数调用无参数构造函数?
- 20. 无参数的构造函数V/S构造函数使用参数
- 21. JS - 构造函数参考
- 22. 构造函数和无参数构造函数?
- 23. 从构造函数中获取JSON的构造函数参数?
- 24. 从参数化构造函数调用默认构造函数
- 25. 构造函数调用具有参数的构造函数
- 26. 将类作为模板参数,并将类构造函数的参数作为方法参数的方法
- 27. C++数组构造函数的参数
- 28. 何时使用参数化方法VS参数的构造函数在Java中
- 29. 进口implicits作为方法参数传递VS类的构造函数参数
- 30. 将构造函数参数传递给方法JAVA
向我们展示一个具体的例子,你问自己这样一个问题。使用构造函数参数来初始化对象的状态。使用方法参数将输入传递给对象的特定方法。 –
这是一个通用设计问题。这意味着有点含糊,但我提供了适当的详细程度。你不应该有代码才能给出一个好的答案。设计发生在你编码之前。 – programm3r
我们(好吧,我)需要一个具体的例子来弄清楚你在问什么。只是给出一个解释的问题包括语言障碍和人与你不在同一波长,这两者都与[so]非常相关。 – Dukeling