假設我有一個類,並且每當我設置了某些屬性bla
,foo
(可以在外部和內部設置)我想調用該類的另一種方法,我們將其稱爲onChangeFunction()
。在OOP中使用設置器的最佳方式
當直接設置內部值時,簡單地調用onChangeFunction()
是否是一種好方法。
function someFunction()
// Some Calculations here ...
this.bla = some_value;
this.onChangeFunction()
end
,或者它會更好地只能通過使用內部setter的方法,因爲存在一定的動作觸發與它,因此這將是一個更清楚地佈置代碼還設置這些變量bla
和foo
。
我甚至更進一步:假設我不需要一個可以從外部調用的外部調用器(訪問類型= public
),是否可以發明一個private
調試器來做同樣的方法並且僅僅因爲觸發的設置動作而使用setter? 編輯:我的意思是以下內容:即使我不會有一個公共setter(因爲不應該有公共訪問權限來設置變量,因爲它只是一個內部變量),它會是一件好事嗎?那只是因爲觸發行動的事情而造成的private
?
在此先感謝!
感謝您的快速回復。是的,我認爲它不太容易出錯,我只是想知道,通過使用來自內部例程的setter而不是直接訪問這些值是不是過於複雜。我目前想的語言是MATLAB,但這是一個普遍的問題。但是,謝謝你的提示,不知道這樣的事情存在。對於我的第二個問題:好吧,我只是想知道這是否是普遍的做法,因爲到現在爲止,我認爲'getters-setters'是一個概念,可以讓一些私人變量在'外部'訪問。 – tim 2012-01-11 08:33:29
@ColHeather:我們正在討論有兩行代碼,並在每個調用站點用兩行代碼替換。說實話,我不會稱之爲「過於複雜」。 – NPE 2012-01-11 08:36:03
@ColHeather:我已經更新瞭解決編輯問題的答案。但是,知道這可能需要幾分鐘時間才能看到我所做的更改。簡而言之:在我看來,擁有「私人」設置者沒有任何問題。 – NPE 2012-01-11 08:36:43