<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的Blog我做主^_^

    走向一條通往JAVA的不歸路...

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks
    對于Builder模式很簡單,但是一直想不明白為什么要這么設計,為什么要向builder要Product而不是向知道建造過程的Director要。剛才google到一篇文章,總算清楚了。在這里轉貼一下這位richardluo的比喻

    簡單地說,就好象我要一座房子住,可是我不知道怎么蓋(簡單的砌墻,層次較低),也不知道怎么樣設計(建幾個房間,幾個門好看,層次較高),于是我需要找一幫民工,他們會砌墻,還得找個設計師,他知道怎么設計,我還要確保民工聽設計師的領導,而設計師本身也不干活,光是下命令,這里砌一堵墻,這里砌一扇門,這樣民工開始建設,最后,我可以向民工要房子了。在這個過程中,設計師是什么也沒有,除了他在腦子里的設計和命令,所以要房子也是跟民工要,記住了!

    以下是richardluo的代碼,我根據他的思路加上了相應的注釋。

    1,定義工人接口,就是能夠完成建造房子任務的人的通用要求。
    1. // 工人接口,定義了各個工人所要進行的工所作。他們負責進行具體部件如窗戶,地板的建造。
    2. // 同時因為房子是民工建的,因此建設完成后由他把房子遞交回房主
    3. public interface Builder {  
    4.     
    5.   public  void makeWindow();  
    6.   
    7.   public  void makeFloor();  
    8.   
    9.   public  Room  getRoom();  
    10. }  

    2,定義設計師,他的職責是指揮房主指派給他的工人按照自己的設計意圖建造房子。

    1. // 設計師。他知道房子應該怎么設計,但他不會自己去建造,而是指揮民工去建造。  
    2. public class Designer {  
    3.   
    4.   // 指揮民工進行工作  
    5.   public void order(Builder  builder) {  
    6.     builder.makeWindow();  
    7.     builder.makeFloor();  
    8.   }  
    9. }  

    3,民工,他負責具體事物的實施。

    1. // 民工。負責進行具體部件如窗戶,地板的建造。
    2. //同時因為房子是民工建的,因此建設完成后由他把房子遞交回房主  
    3. public class Mingong  implements Builder {  
    4.   private  String window="";  
    5.   private  String floor="";  
    6.     
    7.   public  void makeWindow() {  
    8.     window=new String("window");  
    9.   }  
    10.   
    11.   public  void makeFloor(){  
    12.     floor=new String("floor");  
    13.   }  
    14.    
    15.   // 回交房子給房主  
    16.   public  Room  getRoom() {  
    17.     if((!window.equals(""))&&(!floor.equals(""))) {  
    18.       System.out.println("room ready!");  
    19.       return new Room();  
    20.     }  
    21.     else return null;  
    22.   }  
    23. }  

    4,房主,就是雇人,收房。

    1. // 房主。房主的任務就是聘請一個民工,一個設計師,同時把民工給設計師指揮,督促設計師開展工作。最后從民工手上收房。    
    2. public class Client {    
    3.     
    4.   public static void main(String[] args) {    
    5.      Builder mingong = new Mingong();    
    6.      Designer  designer = new  Designer();    
    7.      designer.order(mingong);    
    8.      mingong.getRoom();    
    9.   }    
    10. }   

    引自:http://www.javaeye.com/topic/71175



    posted on 2008-09-01 22:12 java_蟈蟈 閱讀(258) 評論(0)  編輯  收藏 所屬分類: 設計模式

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


    網站導航:
     
    主站蜘蛛池模板: 久久久久免费视频| 菠萝菠萝蜜在线免费视频| 大地资源在线资源免费观看 | 久久久久久夜精品精品免费啦| 亚洲色精品aⅴ一区区三区| sss在线观看免费高清| 亚洲午夜福利精品久久| 一级美国片免费看| 亚洲色大成网站www永久一区| 和老外3p爽粗大免费视频| 亚洲日本一区二区三区在线| 99热在线日韩精品免费| 亚洲好看的理论片电影| 亚洲日本在线免费观看| 亚洲精品二三区伊人久久| 最近高清国语中文在线观看免费| 亚洲国产精品久久久久秋霞小| 国产一级淫片a视频免费观看| 免费国产va视频永久在线观看| 国产亚洲一区二区三区在线不卡| 国内精品免费在线观看| 久久精品亚洲一区二区三区浴池| 无码中文在线二区免费| 添bbb免费观看高清视频| 亚洲真人无码永久在线| 中文字幕视频免费| 相泽南亚洲一区二区在线播放| 亚洲一区视频在线播放| 一级毛片全部免费播放| 亚洲一级特黄特黄的大片| 亚洲精品国产V片在线观看| 999任你躁在线精品免费不卡| 亚洲精品无码国产片| 亚洲一区二区三区香蕉| 四虎在线免费视频| 黄色免费网址在线观看| 亚洲AV无码一区二区三区系列| 永久免费av无码不卡在线观看| 一区二区三区免费看| 亚洲国产美女在线观看 | 亚洲国产人成网站在线电影动漫|