设计模式—建造者模式(Builder)
程序员文章站
2024-02-05 12:52:52
title: 设计模式—建造者模式 建造者模式(Builder)是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。我们获得一个对象的时候不是直接new这个对象出来,而是对其建造者进行属性设置,然后建造 ......
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那么使用建造者模式就很方便,一个注解搞定。
上一篇: Linux下ZooKeeper安装与启动
下一篇: Java------数据和表达式
推荐阅读
-
设计模式—建造者模式(Builder)
-
PHP设计模式之中介者模式
-
ASP.NET MVC5框架剖析与案例解析(MVC5原理剖析、漏洞及运维安全、设计模式) mvc设计模式
-
php设计模式 Visitor 访问者模式
-
详解C#的设计模式编程之抽象工厂模式的应用
-
牛X是种态度(答复: 对于水平一般的程序员,技术要深度还是广度) 博客分类: 生活 编程luceneGoogle搜索引擎设计模式
-
php设计模式 Decorator(装饰模式)_PHP
-
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
-
Ajax框架- ZK 3.6.1释出 最牛新功能展示 zk框架AjaxMVC设计模式
-
Ajax框架- ZK 3.6.1释出 最牛新功能展示 zk框架AjaxMVC设计模式