设计模式之:构造者模式

来源:互联网 发布:广州525孕妇摄影淘宝网 编辑:程序博客网 时间:2024/04/30 14:11
一、概述 

      构造者模式(Builder Pattern):构造者模式将一个复杂对象的构造过程和它的表现层分离开来,使得同样的构建过程可以创建不同的表示,又称为生成器模式。

    在软件系统 中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变 化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定 构建算法”不随着需求改变而改变?

      如果我们使用了构造者模式,那么用户就只需要指定需要构造的类型就可以得到它们,而具体的构造过程和细节就不需要知道了。

三、构造者模式解析
    Builder:是为创建一个Product对象的各个部件指定的抽象接口
    ConcreteBuilder:它是具体的构建者,实现Builder接口,构造和装配各个部件。
    Product:具体的产品
    Director:指挥者,它是构建一个使用Builder接口的对象。

四、实例代码

Java代码  收藏代码
  1. //产品类:  
  2. package com.javapatterns.builder;  
  3.   
  4. public class Product{  
  5.     public Product(){  
  6.        // System.out.println("product is initing.");  
  7.     }  
  8. }  
 
Java代码  收藏代码
  1.  //抽象建造方法:  
  2. package com.javapatterns.builder;  
  3.   
  4. abstract public class Builder{  
  5.     public abstract void buildPart1();  
  6.   
  7.     public abstract void buildPart2();  
  8.   
  9.     public abstract Product retrieveResult();  
  10. }  
 
Java代码  收藏代码
  1. //具体的建造类:产品的零件制造  
  2. package com.javapatterns.builder;  
  3.   
  4. public class ConcreteBuilder extends Builder{  
  5.   
  6.     private Product product = new Product() ;  
  7.     public void buildPart1(){  
  8.         System.out.println("build part one.");  
  9.     }  
  10.   
  11.     public void buildPart2(){  
  12.         System.out.println("build part two.");  
  13.     }  
  14.   
  15.     public Product retrieveResult(){  
  16.         return product;  
  17.     }  
  18. }  
 
Java代码  收藏代码
  1. //产品的建造过程:  
  2. package com.javapatterns.builder;  
  3.   
  4. public class Director{  
  5.     private Builder builder;  
  6.   
  7.     public Director(Builder builder){  
  8.         this.builder = builder;  
  9.     }  
  10.   
  11.    public void construct(){  
  12.         builder = new ConcreteBuilder();  
  13.   
  14.         builder.buildPart1();  
  15.   
  16.         builder.buildPart2();  
  17.   
  18.         builder.retrieveResult();  
  19.   
  20.         //continue with other code  
  21.     }  
  22. }  
 
Java代码  收藏代码
  1. //测试:  
  2. package com.javapatterns.builder;  
  3.   
  4. public class Client{  
  5.   
  6.     private static Director director;  
  7.   
  8.     private static Builder builder = new ConcreteBuilder();  
  9.          
  10.     public void requestBuild(){  
  11.        // director = new Director(builder);  
  12.     }  
  13.      
  14.      public static void main(String[] args) {  
  15.         director = new Director(builder);  
  16.         director.construct();  
  17.     }  
  18.   
  19. }  

0 0
原创粉丝点击