ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          范例(Examples)
          本例從兩個classes開始,代表[人]的Person和代表[部門]的Department:
          class Person {
              Department _department;

              public Department getDepartment() {
                 return _department;
              }
              public void setDepartment(Department arg) {
                 _department = arg;
              }
          }

          class Department {
              private String _chargeCode;
              private Person _manager;

              public Department(Person manager) {
                 _manager = manager;
              }

              public Person getManager() {
                 return _manager;
              }
          ...

          如果客戶希望知道某人的經理是誰,他必須先取得Department對象:
              manager = john.getDepartment().getManager();
          這樣的編碼就是對客戶揭露了Department工作原理,于是客戶知道:Department用以追蹤[經理]這條信息。如果對客戶隱藏Department,可以減少耦合(coupling)。為了這一目的,我在Person中建立一個簡單的委托函數:
              public Person getManager() {
                 return _department.getManager();
              }
          現在,我得修改Person的所有客戶,讓它們改用新函數:
              manager = john.getManager();
          只要完成了對Department所有函數的委托關系,并相應修改了 Person的所有客戶,我就可以移除Person中的訪問函數個體Department()了。
          posted on 2005-08-31 13:35 ivaneeo 閱讀(194) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
          主站蜘蛛池模板: 渭南市| 旬邑县| 鹿邑县| 乌鲁木齐县| 应城市| 柳河县| 鹿泉市| 铅山县| 云阳县| 保亭| 四平市| 安溪县| 宜阳县| 宜川县| 石柱| 中卫市| 大兴区| 苏尼特右旗| 富平县| 商洛市| 潼南县| 隆昌县| 德兴市| 井陉县| 丹棱县| 芜湖市| 镇原县| 英山县| 肇东市| 防城港市| 晋宁县| 丰县| 镇宁| 新沂市| 淮阳县| 和政县| 永春县| 遂宁市| 仲巴县| 城步| 舞阳县|