ivaneeo's blog

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

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

          但是,集群的處理方式應該和其他種類的數據略有不同.取值函數(getter)不該返回群集自身,因為這將讓用戶得以修改群集內容而群集擁有者卻一無所悉.這也會對用戶暴露過多[對象內部數據結構]的信息.如果一個取值函數(getter)確實需要返回多個值,它應該避免用戶直接操作對象內所保存的群集,并隱藏對象內[與用戶無關]的數據結構.至于如何做到這一點,視你使用的Java版本不同而有所不同.

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

          如果你做到以上數點,群集(collection)就被很好地封裝起來了,這便可以降低群集擁有者(class)和用戶之間的耦合度.
          posted on 2005-09-15 15:35 ivaneeo 閱讀(367) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 宝应县| 昌宁县| 宜春市| 宣威市| 蓬溪县| 根河市| 任丘市| 涟源市| 盐津县| 隆德县| 东山县| 济宁市| 德州市| 莱阳市| 梨树县| 文成县| 五原县| 萨嘎县| 壤塘县| 聊城市| 青浦区| 冀州市| 绥江县| 竹溪县| 富蕴县| 奎屯市| 南川市| 讷河市| 喜德县| 通化县| 临武县| 东丰县| 聊城市| 绥阳县| 和田市| 平山县| 开化县| 福安市| 南雄市| 隆回县| 襄樊市|