setter方法如何改变业务需求?

时间:2017-06-20 05:51:25

标签: java getter-setter business-logic

我正在进行MockitoJUnit整合。为了模拟对象,我创建了一些setter方法

@Mock
private SomeDaoImplClass someDaoImplClass

jdbcTamplate = Mockito.mock(NamedParameterJdbcTamplate.class)
someDaoImplClass.setNamedParameterJdbcTamplate(jdbcTamplate)

所以方法setNamedParameterJdbcTamplate(jdbcTamplate)不存在,我在课堂上创建了这个setter method。 我得到了一些您无法在业务类中创建这些set方法的信息 b'coz是其有影响力的业务部门。

请有人建议set methods如何影响BU。

1 个答案:

答案 0 :(得分:0)

没有业务对象应该分配自己的依赖项(你知道,因为那个Inversion of Control/Dependency Injection

因此,如果您需要向对象提供某些,您可以使用setter或构造函数(后者是首选)来执行此操作

确实,仅仅为了测试而添加方法是一种不好的做法。在这种情况下,它甚至可能更糟糕:添加setter禁止我们创建对象immutable,这在处理多个线程时是必需的,并添加了一些安全限制(构造函数完成后没有属性没有初始化。< / p>

如果您需要添加这些方法记录并将其可见性设置为默认,那么它只能从同一个包中看到(测试将在同一个包装上),以尽量减少对生产的影响

如果你不能添加一个setter或修改构造函数......那么,它并不是全部丢失。您可以使用reflection。通过使用它,即使没有访问器甚至最终属性,您也可以修改对象的任何属性。 请注意,这在运行时会较慢,需要一些异常处理