美文网首页
Builder-建造者模式

Builder-建造者模式

作者: c_gentle | 来源:发表于2022-02-14 14:52 被阅读0次

将一个复杂的对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。

使用场景:

多个部件或者零件,都可以装配到一个对象中,但是产生的运行结果又相同。
产品类非常复杂,或者产品类中调用顺序不同产生了不同的作用。
初始化一个对象特别复杂,如使用多个构造方法,或者说有很多参数,并且都有默认值时。

核心类

(1) 抽象产品类 computer。
(2) Builder 抽象 Builder,规范产品的组建,一般是由子类实现具体的组建过程。
(3)MacbookBuilder 具体的Builder类,具体的创建对象的类。
(4) Directror 统一组建过程。

代码实现
//计算机抽象类 Computer
public abstract class Computer {
    protected String mBoard;
    protected String mDisplay;
    protected String mOs;
 
 
    protected Computer(){
    }
 
 
    public void setBoard(String board){
        mBoard=board;
    }
 
    public void setDisplay(String display) {
        this.mDisplay = display;
    }
 
 
    public abstract void setOs() ;
 
 
    @Override
    public String toString() {
        return "Computer{" +
                "mBoard='" + mBoard + '\'' +
                ", mDisplay='" + mDisplay + '\'' +
                ", mOs='" + mOs + '\'' +
                '}';
    }
}
//具体产品类 MacBook
public class MacBook extends Computer{
 
 
    protected MacBook() {
    }
 
    @Override
    public void setOs() {
        mOs="Mac OS X 12";
    }
}
//抽象 Builder
public abstract class Builder {
 
    abstract void buildBoard(String board);
    abstract void buildDisplay(String display);
    abstract void buildOs();
    abstract Computer build();
 
}
//具体的 Builder
public class MacBookBuilder extends Builder {
 
    private Computer mComputer=new MacBook();
    @Override
    void buildBoard(String board) {
        mComputer.setBoard(board);
    }
 
    @Override
    void buildDisplay(String display) {
        mComputer.setDisplay(display);
    }
 
    @Override
    void buildOs() {
        mComputer.setOs();
    }
 
    @Override
    Computer build() {
        return mComputer;
    }
}
//Director类,负责具体的构造 Computer
public class Director {
    Builder mBuilser=null;
 
 
    public Director(Builder builer) {
        this.mBuilser = builer;
    }
 
 
    public void construct(String board,String display){
        mBuilser.buildDisplay(display);
        mBuilser.buildBoard(board);
        mBuilser.buildOs();
    }
}
//具体使用
public class Test {
 
    public static void main(String[] args){
        Builder builder=new MacBookBuilder();
        Director pcDirector=new Director(builder);
        pcDirector.construct("英特尔主板","Retina显示器");
 
        Computer computer = builder.build();
        System.out.println(computer.toString());
    }
 
}

相关文章

  • Builder-建造者模式

    将一个复杂的对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。 使用场景: 多个部件或者零件,都可以...

  • Builder Pattern in Java

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

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

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

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

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

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

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

  • 建造者模式

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

  • 建造者模式

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

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

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

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

网友评论

      本文标题:Builder-建造者模式

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