一、Builder模式
1、定义
将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的的表示。
2、适用场景
-
当创建复杂对象的算法应独立于该对象的组成部分以及它们的装配方式时。
-
当构造过程必须允许被构造的对象有不同的表示时。
说人话:当你要构造一个对象它的参数大于4个尤其是有些参数是必选有些是可选的就可以考虑使用Builder构造模式。
3、Builder模式最简单一个例子
创建一个Person对象,姓名和性别是必须的,年龄和身高等其他属性是可选的,我们有几种方法来创建,第一种是用需要写很多个重载的构造函数,另外一种直接使用JavaBean的set方法但没有办法约束是否必选。下面是使用Builder模式构造的代码。
说明
1、创建一个内部静态类Builder,将对象的属性全部搬一份到Builder中。
2、以必须的属性做为参数创建构造函数
3、创建build方法,将Builder对象作为参数调用主类构造方法
4、主类构造方法以Builder作为参数,然后将Builder的所有属性赋给主类对应的属性。
5、上面代码充斥大量重复的get/set方法,可以用Lombok进行简化,这里先不展开讲了。
4、稍微复杂Builder模式类图
-
Builder:一个抽象接口,以规范产品对象的各个组成成分的建造。
-
ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。
-
Director:调用具体建造者来创建复杂对象的各个部分。
-
Product:要创建的复杂对象。
二、gRPC中Builder模式使用
在gRPC框架中Builder模式使用的比较多,比如启动gRPC这个代码
Server server = ServerBuilder
.forPort(50052)
.addService(new OrderServiceImpl())
.build()
.start();
就是通过ServerBuilder来构建Server对象。UML类图如下
另外gRPC编译生成的gprc桩中也大量使用了Builder模式
文章来源:https://www.toymoban.com/news/detail-728442.html
关于设计模式的概念对于业务开发人员掌握常用的几种就行(用得最多的是策略模式),但要读懂各底层框架,还是需要对所有设计模式都有所了解,否则很难读得懂源代码,并且好多设计模式加上各种变种容易搞混,似是而非,看似简单掌握起来确不容易,用好更难。文章来源地址https://www.toymoban.com/news/detail-728442.html
到了这里,关于gRPC源码剖析-Builder模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!