看板java
标 题Re: [问题] setXXX
发信站不良牛牧场 (Wed Jul 19 07:28:50 2006)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!bbs.ee.ntu!zoonews.ee.ntu!S
※ 引述《[email protected] (加油加油)》之铭言:
: ※ 引述《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》 ◣◣◢ ─╯