• Java设计模式----建造者模式(Builder)


    1.定义:

       将一个复杂对象的创建与它的表示分离,这样可以使得同样的创建方式来构建不同的表示

    2. 建造者模式通常包含4中元素:

       1.  Builder :抽象的接口,称为抽象建造者,用来规范产品各个组成部分的构建。这个接口之复杂对象组成部分的构建,并不涉及具体对象部件的创建

       2. ConcreteBuilder : 实现Builder接口,称为具体建造者,具体化产品各个组成部分的构建。建造完成之后,提供产品的实例

       3. Director: 调用建造者对象来构建复杂对象,在指导中涉及产品信息,只保证产品按一定的顺序创建

       4. Product: 产品类,即要创建的复杂对象类

    3. 示例代码:

       产品类Product:

    /**
     * 产品类
     * @author zqkj001
     *
     */
    public class Product {
       
    	private String part1;
    	private String part2;
    	public String getPart1() {
    		return part1;
    	}
    	public void setPart1(String part1) {
    		this.part1 = part1;
    	}
    	public String getPart2() {
    		return part2;
    	}
    	public void setPart2(String part2) {
    		this.part2 = part2;
    	}
    	
    }
     抽象建造者类Builder:

    /**
     * 抽象建造者类
     * @author zqkj001
     *
     */
    public interface Builder {
        /**
         * 产品零件构造方法1
         * 
         */
        public void buildPart1();
        /**
         * 产品零件构造方法2
         * 
         */
        public void buildPart2();
        
        /**
         * 产品返还
         * @return
         */
        public Product getResult();
        
    }
    具体建造者类 ConcreteBuilder:

    /**
     * 具体建造者类
     * @author zqkj001
     *
     */
    public class ConcreteBuilder implements Builder{
        
    	private Product product=new Product();
    	
    	@Override
    	public void buildPart1() {
    		
    		product.setPart1("build part1...");
    		
    	}
    
    	@Override
    	public void buildPart2() {
    		
    		product.setPart2("build part2...");
    		
    	}
    
    	@Override
    	public Product getResult() {
    		
    		return product;
    	}
     
    }
    导演者类 Director:

    /**
     * 导演者类
     * @author zqkj001
     *
     */
    public class Director {
        
    	/**
    	 * 需要使用的当前建造者对象
    	 */
    	private Builder builder;
    
    	public Director(Builder builder) {
    		this.builder = builder;
    	}
    	
    	/**
    	 * 产品构造方法,负责调用各个零件构造方法
    	 */
    	public void  buildProduct(){
    		builder.buildPart1();
    		builder.buildPart2();
    	}
    }
    测试类:

    public class BuilderTest {
       
    	public static void main(String[] args) {
    		
    		Builder builder=new ConcreteBuilder();
    		
    		Director director=new  Director(builder);
    		
    		director.buildProduct();
    		
    		Product product=builder.getResult();
    		
    		System.out.println(product.getPart1());
    		
    		System.out.println(product.getPart2());
    		
    	}
    }


    4. 使用建造者模式的场合和好处

    a、建造者模式的好处:

    1.使用建造者模式可以使客户端不必知道产品内部组成的细节。

    2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。

    3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

             b、使用场合:

    1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。

    2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。





  • 相关阅读:
    docker使用
    解决wps linux中文字体名字全是英文
    解决小程序云函数操作数据库回调不执行
    解决XP“不是有效Win32程序” 不是改Platform toolset
    [hdu1686] Oulipo【KMP】
    [poj 2104] K-th Number【主席树】
    bzoj2806 [Apio2012]dispatching【可并堆】
    bzoj1492 [NOI2007]货币兑换Cash【cdq分治】
    [coci2015-2016 coii] torrent【树形dp 二分】
    [coci2015-2016 coii] Palinilap【字符串 哈希】
  • 原文地址:https://www.cnblogs.com/elgin-seth/p/5293772.html
Copyright © 2020-2023  润新知