设计模式实践笔记第三节:建造者模式
Posted 滕哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式实践笔记第三节:建造者模式相关的知识,希望对你有一定的参考价值。
建造者模式
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
大多数设计模式都不仅仅存在于IT世界,往往在现实生活中也有相当多的例子,建造者模式也不例外。 builder
的本意是建造者,通常用在建筑领域,小到瓦房单间,大到百米高楼,这些建筑都有一些固定的组成成分,比如墙、屋顶、门和窗等等。建造者们建造一栋房子,只要按照房子的成分,一步一步的添加材料即可。
一般来说我们在代码中使用建造者模式,也是因为有些类有固定的成分,我们不希望暴露过多的实例的创建过程,以此来降低系统维护的复杂程度。创建出来的实例也被称为 表示 。
使用建造者创建接口通用返回值
先来看一段接口的返回代码:
public class LoginController
// 登录
public Result<String> login(String username, String password)
Result<String> result = new Result<>();
if ("javanote".equalsIgnoreCase(username) && "123456".equalsIgnoreCase(password))
result.setCode(0);
result.setData("登录成功");
else
result.setCode(1);
result.setData("登录失败");
return result;
public class Result<T>
private int code;
private T data;
// ...省略getter、setter
一般我们的接口都是固定格式的返回值,直接 new
一个返回实例出来也跑得通,但是我们有更好的方式来实现,那就是使用建造者模式来创建一个返回实例。
那么如何使用建造者模式来优化我们的代码呢?
按照建造者模式的概念,至少需要两个角色:表示和建造者。表示也就是我们需要创建的对象。
public class ResultBuilder<T>
private Result<T> result;
// 通过静态方法提供建造者实例
public static <T> ResultBuilder<T> builder()
return new ResultBuilder<>();
// 私有构造器,保证建造者实例只能通过自身开放的方法提供出去
private ResultBuilder()
this.result = new Result<>();
public ResultBuilder code(int code)
this.result.setCode(code);
return this;
public ResultBuilder data(T data)
this.result.setData(data);
return this;
public Result<T> build()
return this.result;
首先我们提供了一个 ResultBuilder
来作为建造者,这里实现的方式有很多种,核心思想是将建造的整个过程委托给建造者角色,这里使用静态方法来简化操作。
如此,优化后的客户端代码如下:
public class LoginController
public Result<String> login(String username, String password)
if ("javanote".equalsIgnoreCase(username) && "123456".equalsIgnoreCase(password))
return ResultBuilder.<String>builder()
.code(0)
.data("登录成功")
.build();
return ResultBuilder.<String>builder()
.code(1)
.data("登录失败")
.build();
小结
建造者模式是一个非常简单的设计模式,也非常的常用,尤其是在遇到非常之多参数的类要创建实例的时候,可以极大的简化人肉 new
的情况。创建型设计模式本来就是为创建对象服务的,这里如果搭配工厂模式食用,味道更佳。
在实际编程的时候,由于要新增建造者类,所以可能会造成系统整体更复杂,不过不用担心,在实践的过程中有比较多的辅助性开发工具可以帮助我们减轻压力,比如 Lombok
插件中提供的 @Builder
注解可以为一个类创建一建造者,具体的使用方法可以在实践中一探究竟!
实践出真知,让我们一起加油吧!
关注「Java实践笔记」公众号获取全部源代码!
版权声明:本文为公众号「Java实践笔记」的原创文章,转载请联系作者,附上原文出处链接及本声明。
原文链接:https://mp.weixin.qq.com/s/33YfZdDnIFJfDw5wDaa0bA
以上是关于设计模式实践笔记第三节:建造者模式的主要内容,如果未能解决你的问题,请参考以下文章