Discussion:
[問題] setXXX
(时间太久无法回复)
foolish
2006-07-18 14:53:53 UTC
Permalink
請問一下,我發現在很多的API裡面,
在建立物件時,都不直接使用建構子來建立物件,
一些參數都要透過setXXX()的方法來給值,
請問使用這種方法有什麼好處嗎?
用建構子不是更方便嗎 謝謝...
有些情況並不適合用建構子
舉個比較極端的例子,像singleton pattern。
並不直接提供建構子。

像spring中提供的參數注入方式
就分別提供了建構子注入及setter注入方式
這並沒有方不方便的考量,
針對寫的人方不方便算是一個小小的問題。

而是依您整個程式的架構來看比較合適。
--
※ Origin: SayYA 資訊站 <bbs.sayya.org> 
◆ From: 163.26.34.248
2006-07-19 12:18:08 UTC
Permalink
set跟get有對物件下命令這層意義在
並不單單只是存取物件這麼簡單
而是要讓往後的使用者
容易了解某個方法到底在做些什麼
雖然沒有硬性規定 但為了延展性著想
^^^^^^^^^^^^^^^^^
誰告訴你的?
Java Bean 絕對要遵守這個getter/setter規則。
要不然 JSTL useBean的getProperty 跟setProperty完全不能動。
遵守命名規則還是比較好的
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天下猶 tm.net.my海
2006-07-19 12:30:10 UTC
Permalink
除了語氣衝一點之外,
Contactman沒說錯啥阿,
原po問的例子


GoogleSearch search = new GoogleSearch();
search.setKey("000000000000000000000000");
search.setQueryString("Internet standards");
search.setSafeSearch(true);
GoogleSearchResult result = search.doSearch();

沒一個像是用來initialized的參數。
那個, 我想...
他只是在抱怨為什麼沒有多一個建構子來讓他少打一開始的設定...
而非要用一個建構子取代掉部份或全部的 setter...
上面的看法是我認為大多數人的討論都是集中在下面這個主題的原因.
"一定會要 new 一個物件, 而那個物件的初值是要該用 setter 還是建構子給定"
希望在下的看法能稍微回應到你下面這三句.
(恕刪)
: 用建構子取代Setter!!!?
: 每次都得強調, 物件產生和回收的成本是很高的, 這討論串看下來, 似乎大家都
: 沒這個sense. 居然都在Coding的方便性上打轉... Orz
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天下猶 tm.net.my海
Loading...