设计模式—建造者模式(builder)(代码片段)

muggle0 muggle0     2023-04-08     515

关键词:


title: 设计模式—建造者模式
建造者模式(Builder)是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。我们获得一个对象的时候不是直接new这个对象出来,而是对其建造者进行属性设置,然后建造者在根据设置建造出各个对象出来。建造者模式又可以称为生成器模式。

模式结构

一个标准的建造者模式包含如下角色:

  • Builder:抽象建造者
  • ConcreteBuilder:具体建造者
  • Director:指挥者
  • Product:产品角色

源码导读

建造者模式使用比较简单,场景也比较清晰。protobuf中protobuf对应的java类就是使用建造者模式来创建对象的。

public static PersonEntity.Person create()     PersonEntity.Person person = PersonEntity.Person.newBuilder()            .setId(1)            .setName("Pushy")            .setEmail("1437876073@qq.com")            .build();    System.out.println(person);    return person;

一般建造者模式结合链式编程来使用,代码上更加美观。

spring security`中也有使用到建造者模式,其 `AuthenticationManagerBuilder`是 `AuthenticationManager`的建造者,我们可以通过配置 `AuthenticationManagerBuilder`来建造一个 `AuthenticationManager
public class SecurityConfig extends WebSecurityConfigurerAdapter     @Override    protected void configure(AuthenticationManagerBuilder auth) throws Exception         auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder);    

我们来看看 AuthenticationManagerBuilder

public class AuthenticationManagerBuilder extends AbstractConfiguredSecurityBuilder<AuthenticationManager, AuthenticationManagerBuilder> implements ProviderManagerBuilder<AuthenticationManagerBuilder>     ......    ......     public final AuthenticationManager build() throws Exception         if (this.building.compareAndSet(false, true))             this.object = this.doBuild();            return this.object;         else             throw new AlreadyBuiltException("This object has already been built");            

这里抽象建造者是 ProviderManagerBuilder,具体建造者是 AuthenticationManagerBuilder,被建造的对象是 AuthenticationManager 建造方法是 build()方法。

一般建造者模式中建造者类命名以 builder结尾,而建造方法命名为 build()

lombok中@builder就是对实体类使用创造者模式,如果你项目中用到了lombok那么使用建造者模式就很方便,一个注解搞定。

点击关注我的博客
点击关注我的博客

设计模式总结篇系列:建造者模式(builder)(代码片段)

关于建造者模式网上有很多文章,也有些不同的理解。在此结合网上其他文章对建造者模式进行总结。总体说来,建造者模式适合于一个具有较多的零件(属性)的产品(对象)的创建过程。根据产品创建过程中零件的构造是否... 查看详情

设计模式之建造者模式——builder(代码片段)

...建造者模式,又名生成器模式、构建者模式等,是创建型设计模式之一。用于将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。1.适用性:对象的创建比较复杂、有多种创建形式时创建复杂对象... 查看详情

设计模式-建造者模式(builder)(代码片段)

简介:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程创建出不同的表示。结构图:优点:使得创建代码和表示代码分离,建造者隐藏了该产品是如何组装的,所以若需要改变一个产品内部的表示,只需要再定义... 查看详情

设计模式之建造者模式(代码片段)

前言建造者模式也是常用的设计模式,Lombok的@Builder就是一个典型的应用。googleguavacache创建cache就只能通过builder方式建造者模式建造者模式有四个角色:1product2抽象builder3实现builder4director建造者模式是的创建对象算法独立,调用... 查看详情

设计模式之建造者模式(builder)(代码片段)

设计模式非常重要,阅读源码的必不可少的技能。所以接下来的时间对常见的设计模式进行总结和学习。先进行建造者模式的学习。建造者模式使用原理,可以链式调用,当你不需要一些属性的时候,可以不必要传入,而传统的... 查看详情

一天一个设计模式-建造者模式(builder)(代码片段)

前言建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internalrepresentation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。(一).产品的内部表象一个产品常有不同的组成... 查看详情

编程思想设计模式创建模式creational建造者模式builder(代码片段)

Python版https://github.com/faif/python-patterns/blob/master/creational/builder.py #!/usr/bin/python#-*-coding:utf-8-*-"""*Whatisthispatternabout?Itdecouplesthecreationofacomplexobjectanditsreprese 查看详情

23种设计模式之建造者模式(代码片段)

1/**2*作用:3*将复杂物体的构建与表现相分离。4*組成角色:5*1)建造者(Builder):負責定義用來生成實例的接口(API)6*2)具体的建造者(ConcreateBuilder):负责实现Builder角色定义的接口实现类。7*针对不同的业务逻辑,具体化复杂对象的各... 查看详情

gof设计模式(05)建造者模式(代码片段)

简介一、定义1、概念建造者模式(Builder):将一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。2、理解将客户端与包含多个组成部分的复杂对象的创建过程... 查看详情

建造者模式(代码片段)

...对象的过程和组成对象的部件解耦。包含如下几种角色:Builder:抽象建造者(Builder)ConcreteBuilder:具体建造者(CommonBuilder、SuperBuilder)Director:指挥者(Director)Product:产品角色(Role) 1、定义角色类相关属性/* 查看详情

建造者模式---builder(代码片段)

建造者模式定义:GOF给建造模式的定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.这句话说得很抽象,不好理解,其实它的意思可以理解为:将构造复杂对象的过程和... 查看详情

设计模式之建造者模式(代码片段)

设计模式之建造者模式(三)  今天来学习建造者模式,好像也有人叫生成器,一个意思.  一 概念  建造者模式:使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创... 查看详情

建造者模式(代码片段)

...简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个Builder类会一步一步构造最终的对象。该Builder类是独立于其他对象的。介绍意图:将一个复杂的构建与... 查看详情

创建者模式-建造者模式(代码片段)

...建过程可以创建不同的表示。二、机构模式图1.建造者(Builder):为创建一个产品对象的各个部件指定抽象接口2.具体建造者(ConcreteBuider):实现Builder的接口,以构建和装配该产品的各个部分,定义并明确它所创建的表示,并提... 查看详情

建造者模式(代码片段)

建造者模式标签(空格分隔):设计模式什么是建造者模式Builder模式,建造者模式也叫生成器模式,是GoF提出的23种设计模式中的一种,是一种对象的创建型模式,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽... 查看详情

建造者模式(代码片段)

...r模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建... 查看详情

charpter13建造者模式(代码片段)

建造者模式简介建造者模式(builder),又叫生成器模式,将一个复杂对象的构造与它的表示分离,使得同样的建造过程可以创建不同的表示。如果我们用了建造者模式,那么用户就只需要指定需要建造的类型就可以得到他们,... 查看详情

设计模式之建造者模式(代码片段)

 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 组成: 1、builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的... 查看详情