dream.in.java

          能以不變應萬變是聰明人做事的準則。萬事從小事做起,積累小成功,問鼎大成功,是成功者的秘訣。

          迪米特法則和依賴倒轉原則應用[原]

          迪米特法則的表述:
          只與你直接的朋友們通信
          不要跟“陌生人”說話
          每一個軟件單位其他的單位都只有最少的知識,而且局限于那些與本單位密切相關的軟件單位


          具體做法:如果其中之一人類需要調用另一個類的某個方法的話,可以通過第三者轉發這個調用。
          例如:某人如果要調用陌生人中的一個方法,剛可以通過朋友來轉發,而不自己去調用,這樣一來就使系統內部的耦合度降低。





          具體代碼:

           1 package pattern.LoD;
           2 
           3 public class Someone {
           4 
           5     public void operation1(Friend friend) {
           6         // TODO Auto-generated method stub
           7 //        friend.forward();
           8         AbstractStranger stranger = friend.provide();
           9         stranger.operation3();
          10     }
          11 
          12 }
          13 ///////////////////
          14 package pattern.LoD;
          15 
          16 public class Friend {
          17 //    private Stranger stranger = new Stranger();
          18     private AbstractStranger stranger = new Stranger();
          19     
          20     
          21     public void operation2(){
          22         System.out.println("In Friend.operation2()");
          23     }
          24     /*
          25     public void forward(){
          26         stranger.operation3();
          27     }
          28     */
          29     public AbstractStranger provide() {
          30         // TODO Auto-generated method stub
          31         
          32         return stranger;
          33     }
          34 
          35 }
          36 /////////////////////
          37 package pattern.LoD;
          38 
          39 public interface AbstractStranger {
          40     abstract void operation3();
          41 }
          42 ////////////////////
          43 package pattern.LoD;
          44 
          45 public class Stranger implements AbstractStranger{
          46     public void operation3(){
          47         System.out.println("I want to a friend of Someone~~");
          48     }
          49 
          50 }
          51 //////////////////////
          52 package pattern.LoD;
          53 
          54 public class Main {
          55 
          56     /**
          57      * @param args
          58      */
          59     public static void main(String[] args) {
          60         // TODO Auto-generated method stub
          61         Someone someone = new Someone();
          62         Friend friend = new Friend();
          63         someone.operation1(friend);
          64     }
          65 
          66 }
          67 

          posted on 2009-05-03 11:41 YXY 閱讀(268) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 静安区| 成武县| 新巴尔虎左旗| 尼勒克县| 平和县| 石阡县| 黑龙江省| 梁河县| 巴彦县| 阿巴嘎旗| 阳山县| 惠水县| 麻江县| 阳西县| 通山县| 富阳市| 鄂托克前旗| 邳州市| 临泽县| 昌都县| 青田县| 卢龙县| 县级市| 金溪县| 游戏| 浮梁县| 阿拉尔市| 施秉县| 多伦县| 灵山县| 赣榆县| 海丰县| 普定县| 盐池县| 渑池县| 罗平县| 美姑县| 达州市| 卫辉市| 平江县| 枣庄市|