欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【JAVA设计模式】- 建造者模式

程序员文章站 2024-01-24 23:03:10
建造者模式也属于创建型模式,它提供了一种创建对象的最佳模式用户只需要给定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象应用场景需要生成的产品对象有复杂的内部结构,这些产品对象具备共性隔离复杂对象的创建和使用,并获得相同的创建过程可以创建不同的产品适合于一个具有较多的零件(属性)的产品的创建过程实现:盖房子之地基、钢筋工程、铺电线和粉刷package com.li.builder.demo;//抽象的建造者:方法public abstract class Builder...

建造者模式也属于创建型模式,它提供了一种创建对象的最佳模式

用户只需要给定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象

应用场景

  • 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性
  • 隔离复杂对象的创建和使用,并获得相同的创建过程可以创建不同的产品
  • 适合于一个具有较多的零件(属性)的产品的创建过程

实现:盖房子之地基、钢筋工程、铺电线和粉刷

【JAVA设计模式】- 建造者模式
Builder.java

package com.li.builder.demo;

//抽象的建造者:方法
public abstract class Builder {

    public abstract void buildA(); //地基
    abstract void buildB(); //钢筋工程
    abstract void buildC(); //铺电线
    abstract void buildD(); //粉刷

    //完工:得到产品
    abstract Product getproduct();

}

Director.java

package com.li.builder.demo;

//指挥:核心。负责指挥构建一个工程。工程创建由它决定
public class Director {

    //指挥工人按照顺序建房子
    public Product build(Builder builder){
        builder.buildA();
        builder.buildB();
        builder.buildC();
        builder.buildD();

        return builder.getproduct();
    }
}

Product.java

package com.li.builder.demo;

//产品:房子
public class Product {

    private String buildA;
    private String buildB;
    private String buildC;
    private String buildD;

    public String getBuildA() {
        return buildA;
    }
    public void setBuildA(String buildA) {
        this.buildA = buildA;
    }
    public String getBuildB() {
        return buildB;
    }
    public void setBuildB(String buildB) {
        this.buildB = buildB;
    }
    public String getBuildC() {
        return buildC;
    }
    public void setBuildC(String buildC) {
        this.buildC = buildC;
    }
    public String getBuildD() {
        return buildD;
    }
    public void setBuildD(String buildD) {
        this.buildD = buildD;
    }

    //方便测试输出

    @Override
    public String toString() {
        return "Product{" +
                "buildA='" + buildA + '\'' +
                ", buildB='" + buildB + '\'' +
                ", buildC='" + buildC + '\'' +
                ", buildD='" + buildD + '\'' +
                '}';
    }
}

Worker.java

package com.li.builder.demo;

//具体的建造者:工人
public class Worker extends Builder {

    private Product product;

    public Worker() {
        product = new Product();
    }

    @Override
    public void buildA() {
        product.setBuildA("地基");
        System.out.println("地基");
    }

    @Override
    void buildB() {
        product.setBuildB("钢筋工程");
        System.out.println("钢筋工程");
    }

    @Override
    void buildC() {
        product.setBuildC("铺电线");
        System.out.println("铺电线");
    }

    @Override
    void buildD() {
        product.setBuildD("粉刷");
        System.out.println("粉刷");
    }

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

测试

package com.li.builder.demo;

public class Test {
    public static void main(String[] args) {
        //指挥
        Director director = new Director();
        //指挥 具体的工人完成 产品
        Product build = director.build(new Worker());
        System.out.println(build.toString());
    }
}

【JAVA设计模式】- 建造者模式

本文地址:https://blog.csdn.net/ijwwio/article/details/107139067