二、建造者模式

建造者模式笔记

	**建造者模式的构成**
		1 抽象建造者(Builder):为创建一个Product对象的各个部件指定抽象接口
		2 具体建造者(ConcreteBuilder):实现Builder接口,构造和装配产品的各个部件,
		定义并明确它所创建的表示。提供一个返回这个产品的接口。
		3 指挥者(Director):构建一个使用Builder接口的对象
		4 产品角色(Product):被构建的复杂对象,具体建造者创建该产品的内部表示并
		定义它的装配过程。包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

		**关系系列图如下:**
	
		![建造者模式序列图]([https://img-blog.csdnimg.cn/20190124001804123.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0YXJ0Zm91cg==,size_16,color_FFFFFF,t_70])

具体Demo代码实现如下:

package com.design.builder;

/**
 * @author lei.zhang
 * 测试客户端
 */
public class Client {

    public static void main(String[] args) {

        Director director = new Director();

        Builder builderA = new ConcreteBuilderA();
        Builder builderB = new ConcreteBuilderB();

        director.build(builderA);
        Product productA = builderA.getResult();
        productA.show();
        System.out.println();
        director.build(builderB);
        Product productB = builderB.getResult();
        productB.show();
    }
}

package com.design.builder;

/**
 * 创建指挥者
 */
public class Director {

    public void build(Builder builder){
        builder.buildPartA();
        builder.buildPartB();

    }
}

package com.design.builder;
/**
 * @author lei.zhang
 * 接口
 */
public interface Builder {

    public void buildPartA();

    public void buildPartB();

    public Product getResult();
}

package com.design.builder;

/**
 * build实现A
 */
public class ConcreteBuilderA implements Builder {

    private Product product = new Product();

    @Override
    public void buildPartA() {
        product.add("part a");
    }

    @Override
    public void buildPartB() {
        product.add("part b");
    }

    @Override
    public Product getResult() {
        return product;
    }
}

package com.design.builder;
/**
 * build实现B
 */
public class ConcreteBuilderB implements Builder {

    private Product product = new Product();

    @Override
    public void buildPartA() {
        product.add("part x");
    }

    @Override
    public void buildPartB() {
        product.add("part y");
    }

    @Override
    public Product getResult() {
        return product;
    }
}

package com.design.builder;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lei.zhang
 * 装配产品
 */
public class Product {

    List<String> list = new ArrayList<>();

    public void add(String content){
        list.add(content);
    }

    public void show(){
        System.out.println("Display Product:");

        for (String content : list
             ) {
            System.out.println(content);
        }
    }
}

上述就是建造者模式的全部demo,如有问题欢迎指正!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值