美文网首页Java设计模式
通俗易懂理解建造者模式

通俗易懂理解建造者模式

作者: 阿斯巴甜不太甜 | 来源:发表于2019-12-09 18:27 被阅读0次

当一个产品的构建过程是固定且复杂多变的,则可以将该产品的构建过程抽象出来。

从一个简单的例子出发

比如:组装一台电脑,你一定需要有CPU、主板、内存、硬盘以及IO外设。而每个部分你都可以选择不同的类型:CPU可以是Arm或者Intel,内存可以是台电的或是三星的等等。

这样的话,如果将构建电脑的过程抽象出来,就可以如下表示:

public abstract class ComputerBuilder{
    public abstract void buildCPU();
    public abstract void buildMemory(); 
    public abstract void buildIO();
    public abstract Product getProduct();
}

而产品可以简单表示为:

public class Computer {
    String memory;
    String IO;
    String CPU;
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return "memory:"+memory+"\n"+"IO:"+IO+"\n"+"CPU:"+CPU;
    }
}

这个时候如果Dell需要生产一台电脑就会这样做:

public class DellComputerBuilder extends ComputerBuilder{
    
    private Computer DellComputer = new Computer();
    
    @Override
    public void buildCPU() {
        // TODO Auto-generated method stub
        DellComputer.CPU = "dellCPU";
    }

    @Override
    public void buildMemory() {
        // TODO Auto-generated method stub
        DellComputer.IO = "dellIO";
    }

    @Override
    public void buildIO() {
        // TODO Auto-generated method stub
        DellComputer.memory = "dellMemory";
    }

    @Override
    public Computer getProduct() {
        // TODO Auto-generated method stub
        buildCPU();
        buildIO();
        buildMemory();
        return DellComputer;
    }
    
}

最后经销商director将负责把产品卖出:

public class Director {
    private ComputerBuilder computerBuilder;
    public Director(ComputerBuilder cb) {
        this.computerBuilder = cb;
    }
    public Computer getComputer() {
        return computerBuilder.getProduct();
    }
}

这四个类的关系大致如下:

image

与工厂模式(模板工厂、抽象工厂)的区别和联系

我们可以看到整个建造者模式是一个特别强调产品构建过程的设计模式,而工厂模式则更加强调了产品的种类

事实上,上面的例子我特地给出了DellComputer,这说明Computer完全可以作为一个抽象产品类出现,从而满足不同类型的builder。这些builder完全可以是联想、华硕等等。

而在经销商看来,只要你的产品没有缺失(都含有CPU、Memory、IO),那么经销商就完全不必去关心电脑怎么组装的,也不用关心是哪个厂家生产的。经销商只需要告诉客户一件事,那就是我卖的是Computer。而客户需要哪种Computer,只需要告诉经销商即可。

相关文章

  • 通俗易懂理解建造者模式

    当一个产品的构建过程是固定且复杂多变的,则可以将该产品的构建过程抽象出来。 从一个简单的例子出发 比如:组装一台电...

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 建造者模式

    建造者模式 将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示 如何理解建造者模式 建造者模...

  • 设计模式之建造者模式学习笔记

    模式定义 建造者模式属于23种设计模式中的创建型模式,可以理解为创建对象的一种很好的方法。 所谓建造者模式就是将组...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

网友评论

    本文标题:通俗易懂理解建造者模式

    本文链接:https://www.haomeiwen.com/subject/ghdigctx.html