spring 与设计模式(创建型)之Builder模式

一、前言

将一个复杂的对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示,实现构建对象的过程与部件解耦。生活中许多这样的例子,例如大学4年的学习,每一年的学习成绩会最终影响4后的绩点。电脑汽车的装配等

二、UML

spring 与设计模式(创建型)之Builder模式_第1张图片



对象的构建:

package com.bitch.design.create.builder;

/**
 * 下面说明如何创建一个集成usb Type-A,Type-B,Type-C接口的电脑
 * @author chenhaipeng
 * @version 1.0
 * @date 2015/10/31 22:35
 */
public interface Builder {

    //Type-A
    void buildPartA();
    //Type-B
    void buildPartB();
    //Type-C
    void buildPartC();

    //返回装配结果,装配过程由Director来控制实现
    Product getResult();
}

package com.bitch.design.create.builder;

/**
 * @author chenhaipeng
 * @version 1.0
 * @date 2015/10/31 22:35
 */
public class ConCreateBuilder implements Builder {
    Part partA,partB,partC;

    public ConCreateBuilder() {
        partA = new PartA();
        partB = new PartB();
        partC = new PartC();
    }

    @Override
    public void buildPartA() {
        partA.build();
    }

    @Override
    public void buildPartB() {
        partB.build();
    }

    @Override
    public void buildPartC() {
        partC.build();
    }

    @Override
    public Product getResult() {
        Product product = new ConCreateProduct(partA,partB,partC);
        System.out.println("完成最终成品...............");
        return product;
    }

}

对象表示:

package com.bitch.design.create.builder;

/**
 * @author chenhaipeng
 * @version 1.0
 * @date 2015/11/01 1:45
 */
public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    /**
     * 封装内部细节,组装过程
     */
    public void construct(){
        System.out.println("装配开始...........");
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        System.out.println("装配完成...........");
    }
}


测试:


package com.bitch.design.create.builder;

import org.junit.Test;

/**
 * @author chenhaipeng
 * @version 1.0
 * @date 2015/11/01 2:09
 */
public class MainTest {
    @Test
    public void builder() {
        //构建与表示控制分离
        //创建构建器
        Builder builder = new ConCreateBuilder();
        //表示控制器
        Director director = new Director(builder);
        director.construct();
        //返回最终成品
        Product product = builder.getResult();



    }
}




你可能感兴趣的:(spring与设计模式)