作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] setXXX
时间Tue Jul 18 23:04:07 2006
※ 引述《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