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

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

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

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    Builder設計模式的學習

     對于Builder模式很簡單,但是一直想不明白為什么要這么設計,為什么要向builder要Product而不是向知道建造過程的Director要。剛才google到一篇文章,總算清楚了。在這里轉貼一下這位richardluo的比喻。

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

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

    1,定義工人接口,就是能夠完成建造房子任務的人的通用要求。

        // 工人接口,定義了各個工人所要進行的工所作。他們負責進行具體部件如窗戶,地板的建造。
        
    // 同時因為房子是民工建的,因此建設完成后由他把房子遞交回房主
       public interface Builder {  
           
         
    public  void makeWindow();  
          
       
    public  void makeFloor();  
        
        
    public  Room  getRoom();  
    }
      
    2,定義設計師,他的職責是指揮房主指派給他的工人按照自己的設計意圖建造房子。
       // 設計師。他知道房子應該怎么設計,但他不會自己去建造,而是指揮民工去建造。  
        public class Designer {  
          
          
    // 指揮民工進行工作  
          public void order(Builder  builder) {  
         builder.makeWindow();  
           builder.makeFloor();  
         }
      
        }
      
    3,民工,他負責具體事物的實施。
         // 民工。負責進行具體部件如窗戶,地板的建造。
        
    //同時因為房子是民工建的,因此建設完成后由他把房子遞交回房主  
        public class Mingong  implements Builder {  
         
    private  String window="";  
         
    private  String floor="";  
            
          
    public  void makeWindow() {  
          window
    =new String("window");  
        }
      
         
         
    public  void makeFloor(){  
           floor
    =new String("floor");  
         }
      
         
         
    // 回交房子給房主  
         public  Room  getRoom() {  
           
    if((!window.equals(""))&&(!floor.equals(""))) {  
             System.out.println(
    "room ready!");  
            
    return new Room();  
           }
      
           
    else return null;  
         }
      
      }
      

    4,房主,就是雇人,收房。
     // 房主。房主的任務就是聘請一個民工,一個設計師,同時把民工給設計師指揮,督促設計師開展工作。最后從民工手上收房。    
     public class Client {    
         
       
    public static void main(String[] args) {    
          Builder mingong 
    = new Mingong();    
          Designer  designer 
    = new  Designer();    
          designer.order(mingong);    
          mingong.getRoom();    
       }
        
     }
      
    5.房子類:
    public class Room
    {
        
    public Room()
        
    {
            System.out.println(
    "房子造好了");
        }

    }



    posted on 2008-05-23 17:18 々上善若水々 閱讀(1378) 評論(0)  編輯  收藏 所屬分類: 設計模式

    主站蜘蛛池模板: 四虎永久在线精品免费观看视频| 亚洲高清国产拍精品青青草原 | 国产成人精品免费直播| 污网站免费在线观看| 亚洲国产精品久久久天堂| 丁香花免费完整高清观看| 四虎成人精品国产永久免费无码| 亚洲国产精品国自产拍电影| 在线观看免费为成年视频| 99久久国产精品免费一区二区| 亚洲熟妇AV乱码在线观看| 亚洲精品二区国产综合野狼| 最近高清国语中文在线观看免费| 精品乱子伦一区二区三区高清免费播放 | 国产黄片不卡免费| xxx毛茸茸的亚洲| 国产亚洲av片在线观看播放 | 中文字幕亚洲图片| 免费看美女被靠到爽的视频| 国产一区二区免费视频| 亚洲爆乳无码精品AAA片蜜桃| 亚洲午夜未满十八勿入| 亚洲精品老司机在线观看| 久久WWW免费人成人片| 日韩成人免费视频| 曰批全过程免费视频观看免费软件 | 亚洲国产精品成人久久蜜臀| 思思re热免费精品视频66| a级毛片免费全部播放| 亚洲av成人无码网站…| 亚洲视频一区在线| 亚洲精品V欧洲精品V日韩精品| 国产成人一区二区三区免费视频| 67pao强力打造国产免费| 三级黄色在线免费观看| 国产午夜亚洲精品不卡电影| 亚洲一本之道高清乱码| 夜夜亚洲天天久久| 亚洲va无码va在线va天堂| 亚洲人成网站18禁止一区| 国产又大又黑又粗免费视频|