ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          動(dòng)機(jī)(Motivation)
          class常常會(huì)使用群集(collection,可能是array,list,set或vector)來保存一組實(shí)體.這樣的class通常也會(huì)提供針對(duì)該群集[取值/設(shè)值函數(shù)](getter/setter).

          但是,集群的處理方式應(yīng)該和其他種類的數(shù)據(jù)略有不同.取值函數(shù)(getter)不該返回群集自身,因?yàn)檫@將讓用戶得以修改群集內(nèi)容而群集擁有者卻一無所悉.這也會(huì)對(duì)用戶暴露過多[對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)]的信息.如果一個(gè)取值函數(shù)(getter)確實(shí)需要返回多個(gè)值,它應(yīng)該避免用戶直接操作對(duì)象內(nèi)所保存的群集,并隱藏對(duì)象內(nèi)[與用戶無關(guān)]的數(shù)據(jù)結(jié)構(gòu).至于如何做到這一點(diǎn),視你使用的Java版本不同而有所不同.

          另外,不應(yīng)該為這整個(gè)群集提供一個(gè)設(shè)值函數(shù)(setter),但應(yīng)該提供用以為群集添加/移除(add/remove)元素的函數(shù).這樣,群集擁有者(對(duì)象)就可以控制群集元素的添加和移除.

          如果你做到以上數(shù)點(diǎn),群集(collection)就被很好地封裝起來了,這便可以降低群集擁有者(class)和用戶之間的耦合度.
          posted on 2005-09-15 15:35 ivaneeo 閱讀(367) 評(píng)論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 临西县| 双城市| 丹江口市| 奇台县| 新巴尔虎左旗| 高邮市| 松潘县| 成安县| 鹤山市| 都匀市| 富川| 抚顺县| 潢川县| 舞阳县| 丹江口市| 宁乡县| 弋阳县| 临泉县| 任丘市| 尚志市| 平遥县| 黄大仙区| 辽阳市| 沾益县| 四子王旗| 清镇市| 肇东市| 东兴市| 平乡县| 安义县| 玛曲县| 长丰县| 隆昌县| 锦州市| 镇江市| 永春县| 渝中区| 神池县| 灵寿县| 阳高县| 丹阳市|