Re: [問題] setXXX
※ 引述《ChienHsiang (不務正業工程師)》之銘言:
: ※ 引述《Pistachi.bbs@mobbs.stut.edu.tw ()》之銘言:
: : 但是"語法中"並沒有硬性規定吧?
: : 也沒有一定要用Java Bean吧?
: : 那我在寫C++時使用setter/getter規則該怎麼解釋?
: : 這只是想解釋一個概念...
: : 或許表達的不好...不要這麼計較嘛 Orz
: 或許也可以把 Java Bean 的"習慣性用法"當成一種 Pattern 吧
: 我覺得倒沒什麼誰對誰錯...
: 何況很多以前大家認為錯的,現在又是那麼的理所當然...
: Pattern Refactory後,又是一種新的Pattern不是嗎?
物件導向概念裡頭,有個大家都知道,卻都常忽略的概念,就是「封裝」。
這東西簡單來說,就是類別中的變數,不能給其他類別直接存取,而必須
提供setter/getter來設定或取得「變數值」。
(注意!直接操作變數與間接取值是完全不同的兩回事)
這做法可以讓類別設計者能保留程式內容的彈性,當需求有變時,只需更改
類別內部對變數操作的方法,不用讓引用此類別的程式區段同時做修改。
至於為什麼要用setXXX以及getXXX。
如果某人的Java類別沒有重複利用的價值,那麼setXXX/getXXX改為任何有效的
方法名稱都可以。可是,如果這個類別有重複利用的可能,而且不知道會在
哪個領域用到,則採用getXXX/setXXX反而可以讓這隻類別提供Java Bean的功能。
不過之所以用set/get來當字首,簡單來說就是短、簡潔、易記。試想一下,
如果改用assignXXX/fetchXXX,是不是覺得很累綴哩?依學習以及使用的觀點
來看用set/get的確是種行為正確的選擇。
希望這些能解答討論串原PO的疑惑。
--
No Dying Skills, ● - Dame! New tech...
but Lazy Users. .\)
http://hougzou.spaces.msn.com/ _____________ ﹒ ︵ √\ ___________________
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.165.230
討論串 (同標題文章)