一些实用的编程模式 | Builder模式能用来解决什么问题?
建造模式,也有翻译成生成器模式的,大家看到后知道他们是一个东西,都是Builer Pattern
翻译过来的就行。它是一种对象构建模式,是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
那么什么情况下适合使用建造模式呢?
当要构建的对象很大并且需要多个步骤时,使用构建器模式,有助于减小构造函数的大小。
如果你是写过Java
程序一定对下面这类代码很熟悉。
Coffee.builder().name("Latti").price("30").build()
当然,自己给Coffee
类加上构建模式,还是需要写不少额外的代码,不过Java
里有一个lombok
包,只要引入这个包再在实体类加上@Builder
注解,就可以使用建造模式构建对象啦。
import lombok.Builder;@Builder
public class Coffee extends BaseEntity implements Serializable {private String name;private Long price;......
}
那在Go
里面要怎么实现Builder
模式呢?仿照上面这个模式,我们可以这样:
package myserver
//使用一个builder类来做包装
type ServerBuilder struct {Server
}func Builder () *ServerBuilder {sb := new(ServerBuilder)sb.Server.Addr = "127.0.0.1"sb.Server.Port = "1001"// Server其他成员的默认值......return sb
}func (sb *ServerBuilder) Protocol(protocol string) *ServerBuilder {sb.Server.Protocol = protocol return sb
}func (sb *ServerBuilder) Addr(addr string) *ServerBuilder {sb.Server.Addr = addrreturn sb
}func (sb *ServerBuilder) Port(port string) *ServerBuilder {sb.Server.Port = portreturn sb
}func (sb *ServerBuilder) MaxConn( maxconn int) *ServerBuilder {sb.Server.MaxConns = maxconnreturn sb
}func (sb *ServerBuilder) TimeOut( timeout time.Duration) *ServerBuilder {sb.Server.Timeout = timeoutreturn sb
}func (sb *ServerBuilder) Build() (Server) {return sb.Server
}
接下来就可以使用构建模式创造Server
类型的对象了
server := myserver.Builder().Addr("127.0.0.1").Port("11203").MaxConn(50).Build()
这么一来有没有觉得确实比定义一个参数巨多的Server
构造函数要好一点呢?
参考链接
https://coolshell.cn/articles/21146.html
给网管个星标,第一时间吸我的知识
一些实用的编程模式 | Builder模式能用来解决什么问题?相关推荐
- 建造者模式与原型模式/builder模式与prototype模式/创建型模式
建造者模式 定义 用于简化复杂对象的创建 JDK中的建造者模式 java.lang.StringBuilder中的append()方法,每次调用后返回修改后的对象本身. public StringBu ...
- 火遍全网的Hutool,如何使用Builder模式构建线程池
前言 Builder 设计模式也叫做 构建者模式或者建造者模式,名字只是一种叫法,当聊起三种名称的时候知道是怎么回事就行 Builder 设计模式在作者编码过程中,属于比较常用的模式之一.优秀的设计模 ...
- Android常用设计模式之Builder模式理解
Android常用设计模式之Builder模式 1 单例模式 2 Builder模式 Builder模式的应用场景 总结 1 单例模式 单例模式之前有详细的介绍,可移步到链接: 常见的单例模式及其特点 ...
- Effective Java:Builder模式
在Java中遇到多个参数时,有3种方式可以构造类. 一.重叠构造器(telescoping constructor)模式 这种模式下,在类中有多个使用不同参数的构造函数,需要什么参数,就写一个相应的构 ...
- Builder模式简单理解
Builder 模式 Builder模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 那么Builder模式的用场景呢? (1) 相同的方法,不同的执行顺序,产生不同的 ...
- 一些实用的编程模式 | Options模式
今天开个新系列,讲一些实用的编程模式,每个编程模式学完后,都能马上在实战中应用起来,让我们写出更富表达力.易维护.好扩展.优雅亿点点的代码. 这些编程模式的示例我会用Go来演示,但其实这些模式大多与语 ...
- Android Builder模式在开发中的应用
最近在学习图片加载框架Glide的时候,被他精简的写法震惊了.一句话,就可以搞定. Glide.with(mContext) .load(url) .centerCrop() .placeholder ...
- 使用Builder模式创建复杂可选参数对象
在新建对象时,若需要对大量可选参数进行赋值,最常见的做法是JavaBeans模式,即调用一个无参构造方法创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数.代码示例如下: ...
- Java 高效编程之 Builder 模式
前言 在<Effective Java 第2版>中有提到,遇到多个构造器参数时要考虑使用构建器(Builder模式).相比于重叠构造器(telescoping constructor)模式 ...
最新文章
- 使用链路聚合进行负载分担
- 线程池 And 线程池的使用(基于.net平台)
- 解决Redis超卖问题
- 旧金山字体_旧金山建筑业的兴衰。 施工趋势与历史
- SharePoint 2013的100个新功能之搜索(一)
- java list 改变变量的值_3、list改变指针还是改变值
- Python学习day07 - Python进阶(1) 内置方法
- 基于树莓派的语音邮件收发
- Adobe全系列软件介绍
- centos7下载php7.4
- Hbase数据库介绍
- MTK最新工具(刷机,写号,升级等)合集含工具源码
- 大数据与云计算之间的关系
- java成员变量是什么
- 新一代智能会议中控系统
- Linux Bind 安装
- Android实现简单的欢迎界面
- Symbolic Graph Reasoning Meets Convolutions 符号图推理与卷积结合的方式
- java怎么语音转换成文字_Annyang将语音转换为文本
- 新装的windows遇到命令行脚本无法执行