建造者模式

建造者模式适用场景:

  建造一个复杂的对象适用,将构建对象的过程分开,每个类单独构造对象的一部分,最后组装起来,返回我们需要的对象。

下面的例子主要讲解构造一个飞船

Demo: 

//要获得的对象,但是各个组件要拆分开,让对应的类去实现

class AirShip {
  private OrbitaModule orbitaModule;//轨道舱
  private Engine engine; //发动机
  private EscapeTower escapeTower;//逃逸塔
  public OrbitaModule getOrbitaModule() {
    return orbitaModule;
  }
  public void setOrbitaModule(OrbitaModule orbitaModule) {
    this.orbitaModule = orbitaModule;
  }
  public Engine getEngine() {
    return engine;
  }
  public void setEngine(Engine engine) {
    this.engine = engine;
  }
  public EscapeTower getEscapeTower() {
    return escapeTower;
  }
  public void setEscapeTower(EscapeTower escapeTower) {
    this.escapeTower = escapeTower;
  }
}

class OrbitaModule{

  private String name;

  public String getName() {

    return name;

  }

  public void setName(String name) {

    this.name = name;

  }

  public OrbitaModule(String name) {

    super();

  this.name = name;

  }

}

class Engine{

  private String name;

  public String getName() {

    return name;

  }

  public void setName(String name) {

    this.name = name;

  }

  public Engine(String name) {

    super();

    this.name = name;

  }

}

class EscapeTower{

  private String name;

  public String getName() {

    return name;

  }

  public void setName(String name) {

    this.name = name;

  }

  public EscapeTower(String name) {

    super();

    this.name = name;

  }

}

public interface AirShipBuilder {

  Engine builderEngine();
  OrbitaModule builderOrbitaModule();
  EscapeTower builderEscapeTower();
}

//创建返回对象的接口

public interface AirShipDirector {
  AirShip directAirShip();
}

//组装对象的实现类

public class AirShipBuilderImpl implements AirShipBuilder{

  @Override
  public Engine builderEngine() {
    System.out.println("构建发动机");
    return new Engine("发动机");
  }

  @Override
  public OrbitaModule builderOrbitaModule() {
    System.out.println("构建逃逸塔");
    return new OrbitaModule("逃逸塔");
  }

  @Override
  public EscapeTower builderEscapeTower() {
    System.out.println("构建轨道舱");
    return new EscapeTower("轨道舱");
  }
}

//返回对象的实现类

public class AirShipDirectorImpl implements AirShipDirector{

  //创建一个构造组件的接口对象,此处可以使用工厂模式进行修改

  private AirShipBuilder airShipBuilder;

  public AirShipDirectorImpl(AirShipBuilder airShipBuilder) {
    super();
    this.airShipBuilder = airShipBuilder;
  }
  @Override
  public AirShip directAirShip() {
    Engine builderEngine = airShipBuilder.builderEngine();
    OrbitaModule builderOrbitaModule = airShipBuilder.builderOrbitaModule();
    EscapeTower builderEscapeTower = airShipBuilder.builderEscapeTower();
    AirShip ship = new AirShip();
    ship.setEngine(builderEngine);
    ship.setEscapeTower(builderEscapeTower);
    ship.setEscapeTower(builderEscapeTower);
    return ship;
  }
}

//客户端调用

public class Client {

  public static void main(String[] args) {
    AirShipDirector airShipDirector = new AirShipDirectorImpl(new AirShipBuilderImpl());
    AirShip directAirShip = airShipDirector.directAirShip();
    System.out.println(directAirShip);
  }
}

建造者模式主要就是将建造飞船的过程简单的拆分开,让构建飞船的不同的组件让不同的类去完成,此处就可以和工厂模式和单例模式相结合,让开发变得更加清晰。

Java建造者模式的更多相关文章

  1. Java 建造者模式 简单的理解

    建造者模式 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,使用多个简单的对象一步一步构建成一个复杂的对象. 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表 ...

  2. 今儿直白的用盖房子为例,给你讲讲Java建造者模式

    摘要:建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式.它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象. 本 ...

  3. java 建造者模式

    package de.bvb.test3; /** * 建造者模式: 假如一个类有4个字段,每个字段或者每几个字段的组合都需要设置为构造函数,构造函数就比较麻烦 * 而且如果再加一个字段进去也不好拓展 ...

  4. Java建造者模式(思维导图)

    图1 建造者模式[点击查看大图] 基本的知识点已在思维导图中,下面是demo 1,Builder 为创建一个产品对象的各个部件指定抽象接口 public interface PersonBuilder ...

  5. Java设计模式-建造者模式(Builder)

    将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指 ...

  6. Java设计模式04:常用设计模式之建造者模式(创建型模式)

    1. Java之建造者模式(Builder Pattern) (1)概念:       将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [ 构建与表示分离, 同构建不同表示 ] ...

  7. java设计模式之四建造者模式(Builder)

    工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到 ...

  8. 建造者模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) 抽象工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比J ...

  9. 我的Java设计模式-建造者模式

    在未上大学之前,一直有个梦想"I have a dream!",就是能成为一位汽车工程师,一直幻想着开着自己设计的汽车飞奔在公路上,迷倒了万千少女.咳咳~~虽然现在没实现我的dre ...

随机推荐

  1. SOLID原则(OOD&OOP)

    SOLID原则是面向对象编程和面向对象设计的头五大原则.学习及应用这五大原则可以构建一个易于维护和扩展的应用程序,我们一起看看到底是那五大原则. S--单一责任原则(SRP) --Single Res ...

  2. SpringCloud学习系列之六 ----- 路由网关Zuul基础使用教程

    前言 在上篇中介绍了SpringCloud Config的完美使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由网关 ...

  3. window.history.back(-1);与window.go(-1);的区别

    history.back(-1):直接返回当前页的上一页,数据全部消息,是个新页面 history.go(-1):也是返回当前页的上一页,不过表单里的数据全部还在 history.back(1) 前进 ...

  4. 了解Scala反射

    本篇文章主要让大家理解什么是Scala的反射, 以及反射的分类, 反射的一些术语概念和一些简单的反射例子. 什么是反射 我们知道, Scala是基于JVM的语言, Scala编译器会将Scala代码编 ...

  5. 【开源】OSharpNS,轻量级.net core快速开发框架发布

    OSharpNS简介 OSharp Framework with .NetStandard2.0(OSharpNS)是OSharp的以.NetStandard2.0为目标框架,在AspNetCore的 ...

  6. go语言调度器源代码情景分析之二:CPU寄存器

    本文是<go调度器源代码情景分析>系列 第一章 预备知识的第1小节. 寄存器是CPU内部的存储单元,用于存放从内存读取而来的数据(包括指令)和CPU运算的中间结果,之所以要使用寄存器来临时 ...

  7. sympy科学计算器

    SymPy库常用函数 简介 本文抄于https://www.cnblogs.com/baby123/p/6296629.html SymPy是一个符号计算的Python库.它的目标是成为一个全功能的计 ...

  8. ifarme的自适应高度问题

    Html: <iframe id="iframeid" src="/Home/DisplayiIndex"></iframe> JS部分 ...

  9. 「技巧」如何将Sketch改为深色模式

    之前Sketch只能根据mac系统的外观设置变更皮肤.在更新了版本54之后,可以脱离操作系统,在自己的偏好设置中更改外观了. 准备 Sketch 54 更多工具:whose.design 第一步:打开 ...

  10. postgres的使用命令

    1.更新源 yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos1 ...