模式简介

build设计模式是Java开发中常用的一种实例化对象的设计模式,在谷歌的guava和rabbitmq的开发中用到了很多。Java Builder模式主要是用一个内部类去实例化一个对象,避免一个类出现过多构造函数,而且构造函数如果出现默认参数的话,很容易出错。build设计模式类似于通过一个代理来构建对象,可以对对象起到更好的封装作用。

应用场景

1.实例化对象时需要传入的参数过多,而且并不是所有的参数都是我们需要的,如果采用构造方法或是set方法传参数的话,代码重复很高,且不利于维护。

2.当有的参数作为策略是可选时。

代码(别的都是废话,技术本人认为最好的学习方式就是看代码)

package rabbitmq58lib.model;import java.util.concurrent.TimeUnit;/*** Created with IntelliJ IDEA.* Description:* User: weicaijia* Date: 2017-08-28* Time: 14:37*/
public class RabbitExchangeModel {private String ServerUrl;private int Port;private String UserName;private String Pwd;private String QueueName;private String ExchangeName;private String Type;private String ConsumerKey;private String ProducerKey;private boolean isDLX;private String DLE;private String DLK;private TimeUnit retryTimeUnit;private long retryDelaytime;private int retries;private boolean isRetried;private RabbitExchangeModel(Builder builder) {this.ServerUrl = builder.ServerUrl;this.Port = builder.Port;this.UserName = builder.UserName;this.Pwd = builder.Pwd;this.QueueName = builder.QueueName;this.ExchangeName = builder.ExchangeName;this.Type = builder.Type;this.ConsumerKey = builder.ConsumerKey;this.ProducerKey = builder.ProducerKey;this.isDLX = builder.isDLX;this.DLE = builder.DLE;this.DLK = builder.DLK;this.retryTimeUnit = builder.retryTimeUnit;this.retryDelaytime = builder.retryDelaytime;this.retries = builder.retries;this.isRetried = builder.isRetried;}public static class Builder {private String ServerUrl;private int Port;private String UserName;private String Pwd;private String QueueName;private String ExchangeName;private String Type;private String ConsumerKey;private String ProducerKey;private boolean isDLX;private String DLE;private String DLK;private TimeUnit retryTimeUnit;private long retryDelaytime;private int retries;private boolean isRetried;private boolean Durable = true;public Builder(String ServerUrl, int Port, String UserName, String Pwd, String ExchangeName, String Type) {this.ServerUrl = ServerUrl;this.Port = Port;this.UserName = UserName;this.Pwd = Pwd;this.ExchangeName = ExchangeName;this.Type = Type;}public Builder QueueName(String QueueName) {this.QueueName = QueueName;return this;}public Builder ConsumerKey(String ConsumerKey) {this.ConsumerKey = ConsumerKey;return this;}public Builder ProducerKey(String ProducerKey) {this.ProducerKey = ProducerKey;return this;}public Builder isDLX(boolean isDLX) {this.isDLX = isDLX;return this;}public Builder DLE(String DLE) {this.DLE = DLE;return this;}public Builder DLK(String DLK) {this.DLK = DLK;return this;}public Builder retryTimeUnit(TimeUnit retryTimeUnit) {this.retryTimeUnit = retryTimeUnit;return this;}public Builder retryDelaytime(long retryDelaytime) {this.retryDelaytime = retryDelaytime;return this;}public Builder retries(int retries) {this.retries = retries;return this;}public Builder isRetried(boolean isRetried) {this.isRetried = isRetried;return this;}public Builder Durable(boolean Durable) {this.Durable = true;return this;}public RabbitExchangeModel build() {return new RabbitExchangeModel(this);}}public String getServerUrl() {return ServerUrl;}public int getPort() {return Port;}public String getUserName() {return UserName;}public String getPwd() {return Pwd;}public String getQueueName() {return QueueName;}public String getExchangeName() {return ExchangeName;}public String getType() {return Type;}public String getConsumerKey() {return ConsumerKey;}public String getProducerKey() {return ProducerKey;}public boolean isDLX() {return isDLX;}public String getDLE() {return DLE;}public String getDLK() {return DLK;}public TimeUnit getRetryTimeUnit() {return retryTimeUnit;}public long getRetryDelaytime() {return retryDelaytime;}public int getRetries() {return retries;}public boolean isRetried() {return isRetried;}
}

弊端

目前该代码存在一个问题,就是对已经创建的对象的修改的问题,当然我们可以通过加set方法去实现。

ps:附上一篇build精华帖,转载自:java设计模式之建造者模式

Java设计模式之build设计模式相关推荐

  1. Java之美之设计模式

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...

  2. Java中的生成器设计模式

    Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解决的问题. 众所周知, 必要 ...

  3. java 设计模式 示例_Java设计模式–示例教程

    java 设计模式 示例 Design Patterns are very popular among software developers. A design pattern is a well- ...

  4. java与23种设计模式

    1 23种设计模式分类 经典的<设计模式>一书归纳出23种设计模式,本文按<易学设计模式>一书归纳分类如下: 1.创建型模式 前面讲过,社会化的分工越来越细,自然在软件设计方面 ...

  5. java api中的设计模式_Java API 设计模式之策略(Strategy)

    策略设计模式与状态设计模式相类似.我们提到过,状态设计模式包含一个状态对象,该对象封装一个上下文对象的状态.策略设计模式包含一个策略对象.该对象与状态设计模式的状态对象相类似.它们之间的关键不同在于: ...

  6. 第80节:Java中的MVC设计模式

    第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...

  7. java的单例设计模式

    java的单例设计模式包括:饿汉设计模式和懒汉设计模式: 步骤: 1.创建一个对象把他设置为私有的成员变量,保证唯一 2.私有构造方法,防止new一个对象. 3.定义一个公开的静态方法,返回第一步创建 ...

  8. Java中的观察者设计模式

    在本教程中,我们将讨论Observer设计模式. 观察者模式有两个主要方面- 主题和观察者 . 当我们的系统有多个对象(称为观察者)时 ,将使用一个模式,该对象依赖于一个特定对象( 主体)的状态 . ...

  9. Java中的策略设计模式

    策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设计模式. UML表示形 ...

最新文章

  1. “深绿” 及 AlphaGo 对指挥与控制智能化的启示
  2. iis错误Server Application Error的解决方法(附修复工具下载)
  3. new uk psw policy
  4. 从Web借鉴UI设计
  5. (转)Sql Server 对锁的初步认识
  6. 程序员常用网站收藏[定期更新]——csdn博客
  7. python部落稿酬_Python之父考虑重构Python解释器
  8. c语言中整形数据分为几进制,c语言中整型数据中的8进制以及16进制数据 – 手机爱问...
  9. CentOS 7 上搭建 ZooKeeper 集群
  10. 关于c:if没有c:else解决方案
  11. OpenCV精进之路(四):图像处理——图片的缩放和图像金字塔
  12. 金山毒霸喜新厌旧 推荐QQ电脑管家抛弃金山卫士?
  13. 最近发现的一个c# winform的一个很好用的excel控件 reogrid控件
  14. (翻译)反馈循环模式(Feedback loops)
  15. 华硕笔记本Delete键和Insert键合二为一与分离
  16. 关于实时推送系统的那点事
  17. 评副高考计算机英语能加分吗,19类人员评副高以下职称时不用再考外语
  18. Android 贝塞尔曲线的魅力
  19. PTB IP——支持电信配置文件的精确同步:5G
  20. win10 计算机磁盘加内存,内存不够用?教你给Win10系统增加C盘空间

热门文章

  1. java webservice 证书_java调用基于https的webservice(不生成密钥,基于spring配置,接收所有证书)...
  2. 汇编语言程序设计——打印水仙花数
  3. 文件上传(三)阿里云上传文件
  4. 采用RFID智能仓储管理系统,提高工作效率-新导智能
  5. Docker的物理隔离方式及网络桥接模式
  6. Python第三方库(模块)下载和安装(使用pip命令)
  7. php5.3.27下载,php-5.3.27-Win32-VC9-x86
  8. vs2019编译boost1.55
  9. 创业公司必看的12个关键绩效指标
  10. 大学物理质点动力学思维导图_高中物理力学思维导图高中物理知识点总结大全...