设计模式(9)建造者模式

这篇具有很好参考价值的文章主要介绍了设计模式(9)建造者模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍

1、概念:将一个复杂对象的构造与它的表示分离,使得同样的构造过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化;建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。

2、结构图:

import java.util.ArrayList;
 
//产品类
public class Product {
    ArrayList<String> parts = new ArrayList<>();
 
    //添加新的产品不见
    public void add(String part) {
        parts.add(part);
    }
 
    // 列举所有的产品不见
    public void show() {
        for (String part : parts) {
            System.out.println(part);
        }
    }
}
 
//抽象的建造者类
public abstract class Builder {
    //建造部件A
    public abstract void buildPartA();
    //建造部件B
    public abstract void buildPartB();
    //得到产品
    public abstract Product getResult();
 
}
 
 
//具体的建造类
public class ConcreteBuilder1 extends Builder {
    private Product product = new Product();
 
    @Override
    public void buildPartA() {
        product.add("部件A");
    }
 
    @Override
    public void buildPartB() {
        product.add("部件B");
    }
 
    @Override
    public Product getResult() {
        return product;
    }
}
 
//具体的建造类
public class ConcreteBuilder2 extends Builder {
    private Product product = new Product();
 
    @Override
    public void buildPartA() {
        product.add("部件X");
    }
 
    @Override
    public void buildPartB() {
        product.add("部件Y");
    }
 
    @Override
    public Product getResult() {
        return product;
    }
}
 
//指挥者类
public class Director {
    //建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。
    public void construct(Builder builder) {
        builder.buildPartA();
        builder.buildPartB();
    }
}
 
 
    public static void main(String[] args) {
        Director director = new Director();
        Builder b1 = new ConcreteBuilder1();
        Builder b2 = new ConcreteBuilder2();
        director.construct(b1);
        Product result1 = b1.getResult();
 
        director.construct(b2);
        Product result2 = b2.getResult();
    }

 3、使用场景:当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时使用。

4、优点:

  • 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和建造者类是比较稳定的,因此,将主要的业务逻辑封装在导演类中对整体而言可以取得比较好的稳定性。
  • 其次,建造者模式很容易进行扩展。如果有新的需求,通过实现一个新的建造者类就可以完成,基本上不用修改之前已经测试通过的代码,因此也就不会对原有功能引入风险。

5、建造者模式与工厂模式的区别:文章来源地址https://www.toymoban.com/news/detail-667332.html

  • 建造者模式与工厂模式是极为相似的,总体上,建造者模式仅仅只比工厂模式多了一个“导演类”的角色。在建造者模式的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。
  • 与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类——导演类。也就是说,工厂模式是将对象的全部创建过程封装在工厂类中,由工厂类向客户端提供最终的产品;而建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交付给导演类。由导演类负责将各个组件按照特定的规则组建为产品,然后将组建好的产品交付给客户端
  • 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。

到了这里,关于设计模式(9)建造者模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    相关文章 设计模式系列 1.建造者模式简介 定义 建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 简介 建造者模式(builder)是创建一个复杂对象的创建型模式,将构建复杂对象的过程和它的部件解耦,使得构建过程和

    2024年03月17日
    浏览(47)
  • 设计模式之建造者模式

    建造者模式(Builder Pattern) 是一种创建型设计模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这种模式适用于需要分步骤创建复杂对象、构造过程可能需要改变、或者需要隐藏复杂对象的具体构建过程的场景。 Product(产品) :表

    2024年04月24日
    浏览(30)
  • Java设计模式-建造者模式

    建造者模式是一种创建型设计模式,用于将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通过将复杂对象的构建过程分解为多个简单的步骤来实现。 与其他创建型模式不同,建造者模式强调的是将构建过程与表示分离,而不是将对

    2024年02月02日
    浏览(39)
  • 【创建型设计模式】C#设计模式之建造者模式

    参考代码:

    2024年02月13日
    浏览(42)
  • 设计模式之建造者模式与原型模式

    目录 建造者模式 简介 使用场景 优缺点 模式结构 实现 原型模式 简介 应用场景 优缺点 模式结构 实现         将复杂对象的构建与表示进行分离,使得同样的构建过程可以创建不同的表示。是一个将复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不

    2024年02月10日
    浏览(36)
  • 设计模式之创建型模式---建造者模式

    建造者模式是一种创建型设计模式,其核心思想是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。该模式将复杂对象的创建过程拆分成多个简单对象的创建过程,并将这些简单对象组合起来构建出复杂对象。 建造者模式的基本构成通常包括

    2024年04月15日
    浏览(47)
  • 设计模式—创建型模式之建造者模式

    如果我们创建的对象比较复杂,但其细节还要暴露给使用者,这样就需要用到建造者模式。 建造者设计模式, 屏蔽过程,而不屏蔽细节。 比如我们有一个手机类,定义如下: 我们想定制自己的一个手机,可以先定义一个抽象的构建者; 如果我们想定制一个 香蕉手机 ,就可

    2024年02月06日
    浏览(42)
  • 【设计模式】建造者模式就是游戏模式吗?

    传说女娲是用泥巴捏出人来的,当时捏出的小泥人虽然每个都是两条腿、两只手、一个脑袋的样子,但是具体到每个部位,却有有所不同:有的小泥人手长一点,有的手短一点;有的脑袋圆鼓鼓的,有的脑袋尖尖的······ 造物者归纳起来其实就一句话: 女娲造人,形态各

    2024年01月21日
    浏览(35)
  • 设计模式:创建者模式 - 建造者模式

    将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。不同的构建器,相同的

    2023年04月24日
    浏览(46)
  • 设计模式-创建型模式之建造者模式

    无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种部件。而对于大多数用户而言,无须知道这些部件的装配细节,也几乎不会使用单独某个部件,而是使用一辆完整的汽车,可以通过建造者

    2023年04月20日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包