• 技术文章 >Java >java教程

    Java 实现建造者(Builder)模式的代码示例

    黄舟黄舟2017-03-10 11:49:35原创799
    建造者(Builder)模式是创建型模式,创建了一个对外隐藏创建过程的产品,使用组合的方式,由指挥者(Director)来决定建造的流程

    类图



    public interface Builder {
    	void buildPartA();
    	void buildPartB();
    	void buildPartC();
    	
    }


    public class BuilderImpl implements Builder {
    	
    	@Override
    	public void buildPartA() {
    		System.out.println("建造部件A");
    	}
    
    	@Override
    	public void buildPartB() {
    		System.out.println("建造部件B");
    	}
    
    	@Override
    	public void buildPartC() {
    		System.out.println("建造部件C");
    	}
    
    }


    public class BuilderImpl2 implements Builder {
    	
    	@Override
    	public void buildPartA() {
    		System.out.println("建造部件AA");
    	}
    
    	@Override
    	public void buildPartB() {
    		System.out.println("建造部件BB");
    	}
    
    	@Override
    	public void buildPartC() {
    		System.out.println("建造部件CC");
    	}
    
    }


    /**
     * 指挥者:指导 如何 建造
     * 组合Builder
     * @author stone
     *
     */
    public class Director {
    	private Builder builder;
    	
    	public Director(Builder builder) {
    		this.builder = builder;
    	}
    	/**
    	 * 建造方法:定义了建造的流程
    	 * 如果需要其他流程来实现,再new一个指挥者Director就可
    	 */
    	public void construct() {
    		System.out.println("director 指挥 builder进行建造");
    		builder.buildPartA();
    		builder.buildPartB();
    		builder.buildPartC();
    	}
    	
    }


    /**
     * 指挥者:指导 如何 建造
     * 组合Builder
     * @author stone
     *
     */
    public class Director2 {
    	private Builder builder;
    	
    	public Director2(Builder builder) {
    		this.builder = builder;
    	}
    	/**
    	 * 建造方法:定义了建造的流程
    	 * 如果需要其他流程来实现,再new一个指挥者Director就可
    	 */
    	public void construct() {
    		System.out.println("director2 指挥 builder进行建造");
    		builder.buildPartB();
    		builder.buildPartC();
    		builder.buildPartA();
    	}
    	
    }


    /* 
     * 建造者模式:建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,
     * 
     * 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式
     */
    public class Test {
    	public static void main(String[] args) {
    		Builder builder = new BuilderImpl();
    		Director director = new Director(builder);
    		/*
    		 * 同样的构建过程,不同的模块(buildPartA、buildPartB、buildPartC)实现, new一个builder的实现
    		 * 不同的构建过程,new 一个director
    		 * 不同的构建过程,不同的模块实现, new director,new builder
    		 */
    		
    		director.construct();
    		
    		System.out.println("");
    		
    		Builder builder2 = new BuilderImpl2();
    		Director director2 = new Director(builder2);
    		director2.construct();
    		
    		System.out.println("");
    		
    		Builder builder3 = new BuilderImpl2();
    		Director2 director3 = new Director2(builder3);
    		director3.construct();
    	}
    }

    打印:

    director 指挥 builder进行建造
    建造部件A
    建造部件B
    建造部件C
    
    director 指挥 builder进行建造
    建造部件AA
    建造部件BB
    建造部件CC
    
    director2 指挥 builder进行建造
    建造部件BB
    建造部件CC
    建造部件AA

    在现实开发中,可能经常会省略Director这个角色,直接使用Builder来进行建造产品;

    该产品的特点就是属性特别多,多数有默认值,通过一些基本的默认属性,就能构建出一个基本的产品;

    而Builder多使用链式调用,如Product p = new Builder().setA().setB().build();

    以上就是Java 实现建造者(Builder)模式的代码示例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java 实现抽象工厂模式的具体代码详解 下一篇:Java 原型(Prototype)模式的代码示例

    相关文章推荐

    • 动态代理的两种方式是什么• JAVA-5NIO之Selector• J2ME程序开发全方位基础讲解汇总(一)• Java基础之类和对象、单例模式、继承• 打造高性能Java应用需掌握的5大知识

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网