您当前的位置:首页 > 文章 > 设计模式 -- 建造者模式(Builde

设计模式 -- 建造者模式(Builder Pattern)

作者:小铁-Android 时间:2023-11-22 阅读数:121 人阅读
这个模式以前也义Android-kotlin的场景下讲过 Android 用建造者模式模式写一个Dialog-CSDN博客
不过用的是 变种的建造者模式
建造者模式: 属于创建型模式 提供了一种创建对象的最佳方式, 使用多个简单的对象一步一步构建成一个复杂的对象 。
介绍
意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
主要解决问题:一些基本部件不会变,而其组合经常变化的时候。需要生成的对象具有复杂的内部结构,需要生成的对象内部属性本身相互依赖。
关键代码:实现与被代理类组合。
优点:1、建造者独立,易扩展。 2、便于控制细节风险。
缺点:1、产品必须有共同点,范围有限制。 2、如果内部变化复杂,会有很多的建造类。
 以建造一个三角形圆形矩形的图形为例

角色类:包含多个组成部件的复杂对象
public class Shape {
    private String triangle;
    private String circular;
    private String rectangle;
 
    public void setTriangle(String triangle) {
        this.triangle = triangle;
    }
 
    public void setCircular(String circular) {
        this.circular = circular;
    }
 
    public void setRectangle(String rectangle) {
        this.rectangle = rectangle;
    }
 
    public void draw() {
        //使用得到的具体的三角形圆形矩形绘制一个图形
    }
}

抽象建造者:包含创建产品各个子部件的抽象方法
abstract class Builder {
    protected Shape shape = new Shape();
    public abstract void buildTriangle();
    public abstract void buildCircular();
    public abstract void buildRectangle();
 
    public Shape getShape() {
        return shape;
    }
}
具体建造者:实现了抽象建造者接口
public class ConcreteBuilder1 extends Builder{
    @Override
    public void buildTriangle() {
        shape.setTriangle("建造 红色三角形");
    }
 
    @Override
    public void buildCircular() {
        shape.setCircular("建造 蓝色圆形");
    }
 
    @Override
    public void buildRectangle() {
        shape.setRectangle("建造 绿色矩形");
    }
}

public class ConcreteBuilder2 extends Builder{
    @Override
    public void buildTriangle() {
        shape.setTriangle("建造 青色三角形");
    }
 
    @Override
    public void buildCircular() {
        shape.setCircular("建造 蓝色圆形");
    }
 
    @Override
    public void buildRectangle() {
        shape.setRectangle("建造 紫色矩形");
    }
}

指挥者:调用建造者中的方法完成复杂对象的创建。
public class Director {
    private Builder builder;
    public Director(Builder builder) {
        this.builder = builder;
    }
    //产品构建与组装方法
    public Shape construct() {
        builder.buildTriangle();
        builder.buildCircular();
        builder.buildRectangle();
        return builder.getShape();
    }
}
使用
    public static void main(String[] args) {
 
        Builder builder = new ConcreteBuilder1();
        Director director = new Director(builder);
        Shape shape = director.construct();
        shape.draw();
 
        builder = new ConcreteBuilder2();
        director = new Director(builder);
        shape = director.construct();
        shape.draw();
    }
————————————————
版权声明:本文为CSDN博主「小铁-Android」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_50675668/article/details/134434590

本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com