建造者模式

2022-08-01,

建造模式

创建模式,将产品的内部表象和产品的生产过程分割开来
建造模式结构

抽象建造者(Builder)给出一个抽象接口,规范对象的各个组成成分,如电脑,需要cpu,硬盘等
具体建造者:实现抽象建造者声明的接口,提供产品的实例
产品:比如构建好的电脑是一个产品,一个系统可以生产多个产品,产品之间可以互不关联
导演者:调用具体建造者以创建对象
具体建造者:调用创建产品的实例

导演者负责和客户端打交道,将客户的需求划分为对各个零件的建造请求,再委派给具体建造者
一般一个产品类就拥有一个具体的建造者

使用场景举例:工厂:生产电脑
顾客:说出想要电脑型号,配置,然后找到director(经理)购买即可,不需要了解具体组装


public class Client {
    public static void main(String[] args) {
        Builder builder=new SpecificalBuilder();
        Director director = new Director(builder);
        director.print_information();
        Product product = builder.retriveresult();

        product.getPart1();
        product.getPart2();
        System.out.println("组装成功");
    }
}
public class Director {
    private Builder builder=null;
  public Director(Builder builder){
      this.builder=builder;
  }
  public  void print_information(){
      builder.bulidPart1();

      builder.bulidPart2();

  }
}

abstract class Builder {
    abstract void bulidPart1();

    abstract void bulidPart2();

  abstract Product retriveresult() ;

}

public class SpecificalBuilder extends Builder {
     private Product product=new Product();
    @Override
    void bulidPart1() {
        product.setPart1("CPU");
        System.out.println("CPU正在组装。。。");
    }

    @Override
    void bulidPart2() {
       product.setPart2("Mainboard");
        System.out.println("Mainboard正在组装。。。");
    }

    @Override
    Product retriveresult() {
        return product;
    }
}

public class Product {
    private String part1;
    private String part2;

    public String getPart1() {
        System.out.println(part1+"组装完毕");
        return part1;
    }

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public String getPart2() {
        System.out.println(part2+"组装完毕");
        return part2;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }
}

本文地址:https://blog.csdn.net/qq_26022589/article/details/107467826

《建造者模式.doc》

下载本文的Word格式文档,以方便收藏与打印。