设置对象的值

时间:2010-09-30 13:53:57

标签: java oop setter

假设我有一个名为House的课程,其中包含两个字段

name
address

这些领域中的每一个都有一个吸气剂和一个设定者。

现在我想在名为House的{​​{1}}类中使用另一种方法。此方法应使用不同类型的传递对象设置具有属性的字段。

如何创建此方法有两种方法。第一种方式:

setValues

或第二个选项:

private void setHouse(HouseTransfer transer){
   name = transfer.getName();
   address = transfer.getAddress();
}

哪一个更“最佳实践”?

4 个答案:

答案 0 :(得分:3)

在一定程度的粒度下,软件设计比黑白绝对更为主观。我不相信这里有绝对“最佳做法”。

话虽如此,我个人会使用第二种形式。使用setter方法的基本思想是,在某些时候,您可能需要一些特殊的逻辑来设置该值(例如格式化输入,卫生,验证等)。因此,最有意义的是始终依赖于任何此类逻辑位于一个中心位置,而不是在设置此变量的任何位置分散在整个代码中。

如果你有一个非常简单的例子,其中setter只是设置值并且完全知道不会添加其他逻辑,那么你当然可以使用第一种形式来简化。把它放在第二种形式没有真正的性能上,所以我个人只会使用它。

答案 1 :(得分:2)

我会在setHouse方法中使用个别的getter / setter(这是你的第二个选择)。

您拥有setter这一事实表明该操作涉及某种封装。不是重写代码来强制执行封装,而是重用已有的代码。

答案 2 :(得分:1)

Jon's answer to that question(取自另一个关于使用getter / setter的问题,这个问题与此不重复)

你并不总是需要getter / setter,但是如果你有一些,通常有一个很好的理由为什么你实现了它们,在这种情况下:使用它们。

答案 3 :(得分:0)

也许如果您正在设置两个不同的地方,您可能会考虑将您的getter和setter分解为一个通用接口。这可以使以后的自定义更容易,对吧?