※ 引述《sioo.bbs@ptt.cc (加油加油)》之銘言:
: ※ 引述《oishii (喔帥)》之銘言:
: : 應該是針對封裝性來做考量
: : 一些instance variable在encapsulation的考量之下 應設為private
: : 然後透過getXX()與setXXX()的method來做讀取與設定
: : 利用這樣的方式可以避免一些錯誤的產生
: : 比如說某一個instance variable必須為正數
: : 在setter的方法內就可以做這樣的寫入限制
: : 我也是初學者可能沒回答到你的問題
: : 因為我搞不大懂constructor跟參數設定的關係為何
: : 一般用new呼叫constructor產生一個instance之後應該就不會再呼叫建構子了
: : 如果你的意思是說 建構子內用setter的方式來做設定
: : 那裡由應該就是我上一段講的那樣
: : 還請高手指教
: 不好意思,可能是我沒問清楚吧,譬如像google search的api
: GoogleSearch search = new GoogleSearch();
: search.setKey("000000000000000000000000");
: search.setQueryString("Internet standards");
: search.setSafeSearch(true);
: GoogleSearchResult result = search.doSearch();
: 為什麼不乾脆寫一個建構子 GoogleSearch(key,query,isSafe)
: 這樣不是比較快嗎?為什麼還要用setXXX()的方法
用建構子取代Setter!!!?
還真是天才到讓人倒地的想法呀!
敢問兄臺, 以上例來說, 若用建構子, 是否每做一次查詢就必須重新create新的物件?
那就失去物件重複使用的便利性了.
因為建構子只能new呀!
每次都得強調, 物件產生和回收的成本是很高的, 這討論串看下來, 似乎大家都
沒這個sense. 居然都在Coding的方便性上打轉... Orz
以此例來說, 若作連續查詢, 其實我只要不斷改變QueryString()的屬性就好, 同一個
物件就可不斷幫我服務.
但若用建構子做這件事, 連續查詢, 我不但要連續產生不同的物件, 還必須每次都指定
Key和SafeSearch, 兩個每次都一樣的參數, 簡直跟智障一樣, 方便個鬼??
反正用建構子來取代所有參數的Setter, 物件只能用完就丟, 不如乾脆寫個Static的
method直接給參數拿結果還快些....
eg:
class GoogleSearch {
public static GoogleSearchResult doSearch(string Key,
string QueryString,
bool safeSearch) {
....
}
}
看到這樣的發問, 只能 oh, my god!
--
我主修物理
選修計概
副修離散
唉.....三修國文
--
╭──── Origin:<不良牛牧場> bbs.badcow.com.tw (210.200.247.200)─────╮
│ ↘ Welcome to SimFarm BBS -- From : [220.138.44.184] │
╰◣◣◢ ◢◢《不良牛免費撥接→電話:40586000→帳號:zoo→密碼:zoo》 ◣◣◢ ─╯