我正在设计课程......
有一些关键方法需要传递给它们的对象,或者它们需要能够"获取"一个对象.
所以问题是,你是否应该使用getter/setter或者直接将对象作为参数发送给方法 - 以使方法正常工作.或者,如果它们对类正确运行至关重要,是否应该通过构造函数设置对象?
如果在没有某个对象的情况下拥有这个类的实例是没有意义的(例如,在没有连接到数据库的情况下构造数据访问类可能没有意义),那么它就是"依赖"并且应该是其中的一部分构造函数.
如果你的类在没有它的情况下可以存活,或者可以使用一些默认值,那么你可以改为将它作为属性并检查它是否在被使用之前被分配.
在大多数情况下,我强烈主张构造函数依赖注入.
问题不在于它们是多么"关键"(根据定义,每种方法都需要拥有所需的数据).一个更好的问题是他们改变的频率.如果每次调用方法(或者至少可以合理地)它们将是不同的,它们应该是参数.如果预期它们在对象的生命周期(或其中的很大一部分)中通常是相同的,则它们应与对象一起存储.
在后一种情况下,不要只依赖于用户调用setter.如果它们是必需的,它们应该在构造函数中设置,即使它们可以由setter更改.