建造者(Builder)设计模式

建造者(Builder)设计模式

1.0.0 产生建造者模式的原因

????在类的数据特别复杂的时候,创建一个类需要花费很长的时间,因为有些类需要根据不同的场合进行不同的初始化。在类结构比较复杂,而且初始化比较困难的情况下,封装好的类创建步骤可以减少工作量,提高稳定性。这就是为什么需要建造者模式的原因。

2.0.0 什么是建造者模式?

将复杂对象的构建和对象的表示分离,使得同样的构建过程可以创建不同的表示。

3.0.0 建造模式的使用场景

  • 复杂对象的创建(参数较多,而且比较初始化困难)--->创建的封装

4.0.0 建造者模式的对象

  • 产品对象
  • 抽象建造器
  • 具体建造器
  • 指挥者

5.0.0 建造者模式的一般实现

@Slf4j
public class BuilderPattern {
    class CarDirector {
        private IBuilder builder;
        public CarDirector(IBuilder builder) {this.builder = builder;}
        public Car construct() {
            builder.buildWheel();
            builder.buildBody();
            builder.buildEngine();
            return builder.build();
        }
    }

    interface IBuilder {
        void buildWheel();
        void buildBody();
        void buildEngine();
        Car build();
    }

    class CarBuilder implements IBuilder {
        private Car car = new Car();
        @Override
        public void buildWheel() {car.setWheel("wheel");}
        @Override
        public void buildBody() {car.setWheel("body");}
        @Override
        public void buildEngine() {car.setWheel("engine");}
        @Override
        public Car build() {return car;}
    }

    @Setter
    class Car {
        private String wheel;
        private String body;
        private String engine;
    }
}

6.0.0 建造者模式和工厂模式的联系和区别

  • 工厂模式--> 工厂的分配以及产品线的创建/产品的创建
  • 建造者模式-->产品的组装过程,先装螺丝,后装电线....
  • 工厂模式:董事长要做一批产品,根据产品的的不同分配不同的分工厂生产产品。
  • 建造者模式:流水线组装产品,线长需要根据不同的需求,安排不同的人组装一个产品。
  • 高度不同!!! 董事长和线长的区别

原文地址:https://www.cnblogs.com/fengzhida/p/11366739.html

时间: 2024-08-06 14:50:30

建造者(Builder)设计模式的相关文章

Java 实现建造者(Builder)模式

建造者(Builder)模式是创建型模式,创建了一个对外隐藏创建过程的产品,使用组合的方式,由指挥者(Director)来决定建造的流程 public interface Builder { void buildPartA(); void buildPartB(); void buildPartC(); } public class BuilderImpl implements Builder { @Override public void buildPartA() { System.out.p

建造者(Builder)模式

在学习MyBatis的过程中遇到了建造者(Builder)模式,查找了相关资料,在这做下记录加深印象. 参考资料: java设计模式-建造者模式(Builder) 人人都会设计模式---建造者模式--Builder <JAVA与模式>之建造模式 1.什么是建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,通俗的说就是:建造者模式就是如何一步步构建一个包含多个组成部件的对象,相同的构建过程可以创建不同的产品. 2.一个组装电脑的示例 小明想组装一个台式电脑,小

Builder设计模式

Builder设计模式:个人认为,核心在于两个类.Builder类和Director类.通过Builder类和Director类,把万事万物抽象为部件和组装两部分.通过两部分的配合,把最终的产品,展示给客户.上图,只组装了一款产品. 公司做大以后,不仅可以提供一款产品.根据已有的功能多少和精简,可以快速生产出多种的产品,只要不同的construct和Product就可以了.construct提供了三个功能,说明这是一款lenovo的thinkpadT430笔记本电脑.如果construct只提供

设计模式--建造者(Builder)模式

将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示                                                         --<设计模式>GOF Insus.NET在ASP.NET环境中,列举一个建造者设计模式(Builder)例子,以最帖近开发环境与需求. 开发站点时,我们需要开发新闻类,视频类,图片类等等.每个网页还有可能是页头,内容,页脚等.开发这些页头,内容与页脚时,我们会使用用户控件来写好,加载至网页中去. 每个类别的网页,

设计模式之建造者(Builder)模式

意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以表示不同的表示. 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 当构造过程必须允许被构造的对象有不同的表示时. UML图 Builder --为创建一个Product对象的各个部件指定抽象接口. ConcreteBuilder --实现Builder的接口以构造和装配该产品的各个部件. --定义并明确它所创建的表示. --提供一个检索产品的接口. Director --构造一个使用Builder接口的

三分钟理解“建造者模式”——设计模式轻松掌握

"建造者模式"生活中的例子: 肯德基做汉堡的过程都是有严格的规范的,不管是麦香鸡腿堡还是新奥尔良烤鸡腿堡,他们的制作步骤都是有严格规定,做汉堡的人既不能多做一步,也不能少做一步.对于不同的汉堡来说,虽然每一步加的料所有不同,但做汉堡的步骤都是一样的.因为有了对做汉堡过程的严格控制,因而全国所有的肯德基店做出来的汉堡味道都是一样的. 这些汉堡就是一个个对象,刚被创建出来的时候它就是两片面包片,没有任何内容:然后我们把它扔到一个流水线上,这个流水线会按照指定的步骤往汉堡对象中逐步添加材料:

[DesignPattern]Builder设计模式

模式的定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 模式的使用场景 相同的方法,不同的执行顺序,产生不同的事件结果时: 多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时: 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适: Android源码中的模式实现 在Android源码中,我们最常用到的Builder模式就是AlertDialog.Builder, 使用该Builder来构建复杂的AlertD

Builder 设计模式的学习

Buileder(生成器)-对象创建型模式 一 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 二 适用性 在以下情况使用Build模式: 1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 2 当构造过程必须允许被构造的对象有不同的表示时. 3 Builder模式要解决的也正是这样的问题: 当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成), 我们要复杂对象的创建过程和这个对象的表示(展示)分离开来, 这样做的好处就是通过一

Android 建造者(Builder)模式

关于 Builder 模式 详述:http://blog.csdn.net/jjwwmlp456/article/details/39890699 先来张图 看到 Android  中 使用了 Builder 模式的地方还是很多的. 使用时 大概如下: Notification noti = new Notification.Builder(context).build(); AlertDialog dialog = new AlertDialog.Builder(context).create