美文网首页
构建器模式

构建器模式

作者: zzj0990 | 来源:发表于2021-01-19 00:16 被阅读0次

1. 概念

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

建造者模式就是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。

2. 适用场景

需要生成的产品对象内部结构复杂;
需要生成的产品对象属性相互依赖;
需要生成的产品对象使用其他不易得到对象;

3. 代码示例分析

屏幕快照 2021-01-17 下午11.06.02.png

故事情节是这样的:我发现我儿子(8岁)现在对游戏很迷恋(当然了我会限制他的时间),现在也是正值寒假期间嘛,观察了一下,他最近经常看《我的世界》的攻略视频。其中有个场景是建造地形,地形也是比较复杂的,分为墙、堡垒、矿井等。
好了废话不多说,直接上代码

  • 待构建的地形类-Terrain:
// 地形
public class Terrain {
    Wall w;
    Fort f;
    Mine m;
}
// 城墙
class Wall {
    int x, y, w, h;

    public Wall(int x, int y, int w, int h) {
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
    }
}
// 堡垒
class Fort {
    int x, y, w, h;

    public Fort(int x, int y, int w, int h) {
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
    }

}
// 矿井
class Mine {
    int x, y, w, h;

    public Mine(int x, int y, int w, int h) {
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
    }
}
  • 抽象地形建造-TerrainBuilder:
public interface TerrainBuilder {
    TerrainBuilder buildWall(); // 返回值这里用了点小技巧【醒目】,到场景类就可以看到
    TerrainBuilder buildFort();
    TerrainBuilder buildMine();
    Terrain build();
}
  • 具体的构建者 - ComplexTerrainBuilder:
public class ComplexTerrainBuilder implements TerrainBuilder {
    Terrain terrain = new Terrain(); // 待构建的复杂对象
    @Override
    public TerrainBuilder buildWall() {
        terrain.w = new Wall(10, 10, 50, 50);
        return this;
    }
    @Override
    public TerrainBuilder buildFort() {
        terrain.f = new Fort(10, 10, 50, 50);
        return this;
    }
    @Override
    public TerrainBuilder buildMine() {
        terrain.m = new Mine(10, 10, 50, 50);
        return this;
    }
    @Override
    public Terrain build() {
        return terrain;
    }
}
  • 场景类 - Director:
public class Director {
    TerrainBuilder builder = new ComplexTerrainBuilder();
    Terrain t = builder.buildFort().buildMine().buildWall().build(); // 链式
} 

4. 总结

  • 建造模式分为两个很重要的部分:
    Builder接口:定义了如何构建各个部件。
    Director角色:负责整体的构建算法,通常是分步骤的构建产品。

  • 建造模式的核心:
    在于分离构建算法和具体构造的实现,从而使得构建算法可重用,具体的构造实现可以方便扩展和切换,从而可以灵活地构造出不同的产品对象。

  • 建造模式 VS 抽象工厂:
    工厂模式实现:获取对象;
    建造模式实现:创建对象;
    抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式不需要关心构建过程,只关心什么产品由什么工厂生产即可。而建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零配件而产生一个新产品。

————————————————————
坐标帝都,白天上班族,晚上是知识的分享者
如果读完觉得有收获的话,欢迎点赞加关注

相关文章

  • 建造者模式(Builder Pattern)

    Builder模式,建造者模式,构建器模式,生成器模式 意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过...

  • 构建器模式

    构建器模式就不详细说了,它就是说在类的内部写一个静态内部类,可以方便的构建类并选择性的设置类的属性,不需要繁杂的s...

  • 构建器模式

    1. 概念 建造者模式(Builder Pattern) 又名生成器模式,是一种对象构建模式。它可以将复杂对象的建...

  • kotlin<第八篇>:协程的启动与取消

    一、启动构建器 launch与async构建器都用来启动新协程: 等待一个作业: 二、启动模式 三、作用域构建器 ...

  • 创建型模式:06-建造者模式

    类图 示例代码: 特殊建造者模式(构建器)

  • spring框架中的设计模式一

    Spring框架中使用的4种设计模式:解释器,构建器,工厂方法和抽象工厂。 解释器设计模式 此模式基于表达式和评估...

  • (学习记录)Android源码设计模式解析与实战——第三章总结

    Builder建造者模式 Buider模式是一个创建型模式,用来构建复杂对象的。构建对象一般是通过构造器完成的,但...

  • 72 - 解释器模式详解

    解释器模式,它用来描述如何构建一个简单的“语言”解释器。比起命令模式,解释器模式更加小众,在一些特定的领域会被用到...

  • 设计模式之构建器模式

    意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。构建器模式主要用于“分步骤构建一个...

  • Java应用小实例总结

    1.1 建造者模式 【静态内部类的引用------Builder构建器】 《 publicstaticclass...

网友评论

      本文标题:构建器模式

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