作者hougzou (该换个重训方法了)
看板java
标题Re: [问题] setXXX
时间Thu Jul 20 10:29:48 2006
※ 引述《ChienHsiang (不务正业工程师)》之铭言:
: ※ 引述《[email protected] ()》之铭言:
: : 但是"语法中"并没有硬性规定吧?
: : 也没有一定要用Java Bean吧?
: : 那我在写C++时使用setter/getter规则该怎麽解释?
: : 这只是想解释一个概念...
: : 或许表达的不好...不要这麽计较嘛 Orz
: 或许也可以把 Java Bean 的"习惯性用法"当成一种 Pattern 吧
: 我觉得倒没什麽谁对谁错...
: 何况很多以前大家认为错的,现在又是那麽的理所当然...
: Pattern Refactory後,又是一种新的Pattern不是吗?
物件导向概念里头,有个大家都知道,却都常忽略的概念,就是「封装」。
这东西简单来说,就是类别中的变数,不能给其他类别直接存取,而必须
提供setter/getter来设定或取得「变数值」。
(注意!直接操作变数与间接取值是完全不同的两回事)
这做法可以让类别设计者能保留程式内容的弹性,当需求有变时,只需更改
类别内部对变数操作的方法,不用让引用此类别的程式区段同时做修改。
至於为什麽要用setXXX以及getXXX。
如果某人的Java类别没有重复利用的价值,那麽setXXX/getXXX改为任何有效的
方法名称都可以。可是,如果这个类别有重复利用的可能,而且不知道会在
哪个领域用到,则采用getXXX/setXXX反而可以让这只类别提供Java Bean的功能。
不过之所以用set/get来当字首,简单来说就是短、简洁、易记。试想一下,
如果改用assignXXX/fetchXXX,是不是觉得很累缀哩?依学习以及使用的观点
来看用set/get的确是种行为正确的选择。
希望这些能解答讨论串原PO的疑惑。
--
No Dying Skills, ● - Dame! New tech...
but Lazy Users. .\)
http://hougzou.spaces.msn.com/ _____________ ﹒ ︵ √\ ___________________
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.165.230