在OOP中使用setter的最佳方法

时间:2012-01-11 08:23:36

标签: oop coding-style setter

假设我有一个类,每当我设置某些属性blafoo(可以在外部和内部设置)时,我想调用该类的另一个方法,让我们调用它{{ 1}}。

在直接设置内部值时,简单地调用onChangeFunction()是否是一种好方法,例如

onChangeFunction()

或者最好还是通过使用内部setter方法设置这些变量function someFunction() // Some Calculations here ... this.bla = some_value; this.onChangeFunction() end bla,因为有一个触发它的特定动作,因此它会更清楚地排列代码。

我甚至更进了一步:假设我不需要可以从外部调用的外部设置器(访问类型= foo),发现{{1}还是不错的由于触发的set-action,setter执行相同的方法并且只使用setter? 编辑:我的意思如下:即使我没有公共设置器(因为不应该有公共访问来设置变量,因为它只是一个内部变量)它是否仍然是很高兴有一个public的setter - 只是因为触发了动作的事情?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为从长远来看,总是使用setter并从setter中调用onChangeFunction()更不容易出错。

您没有指定您的编程语言,但有些语言允许用户定义一个看起来像数据成员的“属性”,但在尝试更改它时总是调用一个函数。例如,请参阅Python中的property et al

关于你的第二个问题,我认为拥有private二传手问题没有任何问题。