Re: [問題] setXXX

看板java作者 (痞子軍團團長)時間19年前 (2006/07/18 23:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/22 (看更多)
※ 引述《sioo (加油加油)》之銘言: : 請問一下,我發現在很多的API裡面, : 在建立物件時,都不直接使用建構子來建立物件, : 一些參數都要透過setXXX()的方法來給值, : 請問使用這種方法有什麼好處嗎? : 用建構子不是更方便嗎 謝謝... 這個問題問的好 之前還跟某台客高手爭執這件事情 也算是機緣巧合,不久之後就翻到書上的這段話 我引用如下,還希望作者不要介意 =============================================================== Spring 技術手冊 p.3-7   至於要使用 Constructor 或 Setter 方法來完成依賴注入這個 問題,其實就等於在討論一個古老的問題:要在物件建立時就準備好 所有的資源,或是在物件建立好後,再使用 Setter 方法來進行設定 。   使用 Constructor 的好處之一是,可以在建構物件的同時一併 完成依賴關係的建立,物件一建立後,它與其它物件的依賴關係也就 準備好了,但如果要建立的物件關係很多,使用 Constructor injection 會在建構方法上留下一長串的參數,且不易記憶,這時使 用 Setter 方法會是個不錯的選擇。另一方面,Setter 方法具有明 確的方法名稱可以了解注入的物件匯是什麼,像是 setXXX() 這樣的 名稱,會比記憶 Constructor 上某個參數位置的索引代表某個物件 來得好,當結合 IDE 的方法提示功能使用時,撰寫程式會更方便且 有效率。   然而使用 Setter 方法時,由於提供有 setXXX() 方法,所以不 能保證相關的資料成員或資源在執行時期不會被更改設定,因為程式 開發人員可能直接執行 Setter 方法來設定相關屬性,所以如果想要 讓一些資料成員或資源變為唯讀或是私有,使用 Constructor injection 會是個簡單的選擇。 -- 侃侃長論鮮窒礙 網站:http://www.psmonkey.idv.tw 眾目睽睽無心顫 個人版:telnet://legend.twbbs.org 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.172.167
文章代碼(AID): #14lFUn1s (java)
討論串 (同標題文章)
文章代碼(AID): #14lFUn1s (java)