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-從地獄中重生
          主站蜘蛛池模板: 特克斯县| 霍林郭勒市| 峡江县| 海林市| 阿拉善右旗| 会理县| 阿坝县| 中超| 进贤县| 玛沁县| 怀仁县| 淮阳县| 叙永县| 深圳市| 桓仁| 彭水| 静宁县| 天柱县| 双桥区| 珠海市| 仪征市| 卢龙县| 三河市| 和硕县| 邢台县| 崇仁县| 宣化县| 栖霞市| 县级市| 潜江市| 万安县| 平乐县| 开封县| 湄潭县| 包头市| 信阳市| 华阴市| 麻江县| 红原县| 黎平县| 彭山县|