设计模式之(四)——建造者模式

首先我们看下抽象工厂模式,是生成一个一个独立的对象。
而 建造者模式 其实是【把生成的几个独立的对象组成一个整体。】

下面我们看下类图: 类图 我们看到类图中的部分:
1、Director 指导者:其实就是在生成一个整体的时候 要调用的对象,他来指导 Builder 类 实现配件的生成和组装;
2、Builder:一般是接口(抽象类影响 具体实现类的 继承关系),是定义的具体实现类 的一个上层抽象,里面定义的是实现的具体生成,组装的方法;
3、ConcreteBuilder:具体实现类,实现组装和生成。
4、Product:生成的一个整体。

如果不考虑扩展性的话,其实可以只看ContreteBuilder类 和 Product类。像数学中的加法,Part1 + Part2 = Product,实现加法的操作是ContreteBuilder类。

来个事例:

 class Director {
    public void produce(IBuilder Builder){
        Builder.buildPart1("part1");
        Builder.buildPart2("part2");
    }
}

 interface IBuilder {
    public void buildPart1(String name1);
    public void buildPart2(String name2);
    public Product getProduct ();
}

 class Builder implements IBuilder {
    Product product;
    public Builder(){
        product = new Product();
    }

    @Override
    public void buildPart1(String name1) {
        product.part1Name = name1;
    }

    @Override
    public void buildPart2(String name2) {
        product.part2Name = name2;
    }

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

 class Product {
    String part1Name;
    String part2Name;

    public Product (){}

     public Product(String part1Name, String part2Name) {
         this.part1Name = part1Name;
         this.part2Name = part2Name;
     }

     public String getPart1Name() {
         return part1Name;
     }

     public void setPart1Name(String part1Name) {
         this.part1Name = part1Name;
     }

     public String getPart2Name() {
         return part2Name;
     }

     public void setPart2Name(String part2Name) {
         this.part2Name = part2Name;
     }

     @Override
     public String toString() {
         return "Product : part1Name= " + part1Name +" , part2Name=  " + part2Name;
     }
 }

public class BuilderTest {

    public static void main(String[] args) {
        Product product = new Product();
        IBuilder  builder = new Builder();
        Director director = new Director();
        director.produce(builder);
        product = builder.getProduct();
        System.out.println(product.toString());
    }
} 

result
由指导者 Director 把name 传进去就实现了组装。
这样就实现了建造者模式。
尝试一下吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值