Java/Android 构建者(Builder)设计模式(又叫生成器模式)
2018-03-21 15:49
597 查看
当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如config,VO,PO,Entity),要创建的话可能就需要了解这个类的内部结构,还有这些东西是怎么组织装配等一大坨乱七八糟的东西,这个时候就会增加开放成本,而且很混乱。这个时候就想啊想一种什么法子来管理一下这个类中的数据呢,怎么在创建的时候让它按部就班的来,并且代码可读性很好别让我看花了眼,我要的东西也能很好的设置进来,这就是Builder(构建者模式)。
看一个例子
Student并不是直接new出来的,对其构造器进行了处理使其可访问范围尽可能的小,只让它通过Student.Builder来构建自己,在Student.Builder中提供了一种类set的方法链的方式来设置值,然后在最后的build()方法的时候会返回一个Student对象,现在要创建一个Student对象,代码如下:
再对比一下如果不使用构造者模式(一般情况下的用法):
创建对象:
一般的套路:优点是比较简单,开发效率高,缺点是如果参数真的很多的话鬼知道每个对应的是什么意思啊。
Builder模式:优点是可以将构造器的setter方法名取成类似注释的方式,这样我们可以很清晰的知道刚才究竟设置的什么值,可读性较高,缺点是比较冗长。
原文地址:构建者(Builder)设计模式(又叫生成器设计模式)
参考文章: 设计模式之Builder模式
Java高效编程之Builder模式
看一个例子
复制代码 public class Student { private int id; private String name; private String passwd; private String sex; private String address; // 构造器尽量缩小范围 private Student() { } // 构造器尽量缩小范围 private Student(Student origin) { // 拷贝一份 this.id = origin.id; this.name = origin.name; this.passwd = origin.passwd; this.sex = origin.sex; this.address = origin.address; } public int getId() { return id; } public String getName() { return name; } public String getPasswd() { return passwd; } public String getSex() { return sex; } public String getAddress() { return address; } /** * Student的创建完全依靠Student.Builder,使用一种方法链的方式来创建 * */ public static class Builder { private Student target; public Builder() { target = new Student(); } public Builder address(int id) { target.id = id; return this; } public Builder name(String name) { target.name = name; return this; } public Builder password(String passwd) { target.passwd = passwd; return this; } public Builder sex(String sex) { target.sex = sex; return this; } public Builder address(String address) { target.address = address; return this; } public Student build() { return new Student(target); } } }
Student并不是直接new出来的,对其构造器进行了处理使其可访问范围尽可能的小,只让它通过Student.Builder来构建自己,在Student.Builder中提供了一种类set的方法链的方式来设置值,然后在最后的build()方法的时候会返回一个Student对象,现在要创建一个Student对象,代码如下:
Student s=new Student.Builder().name("CC").password("qwerty").sex("男").address("银河系第二旋臂").build();
再对比一下如果不使用构造者模式(一般情况下的用法):
复制代码 /** * 学生实体 * @author CC11001100 * */ public class Student { private int id; private String name; private String passwd; private String sex; private String address; public Student() { } public Student(String name, String passwd, String sex, String address) { super(); this.name = name; this.passwd = passwd; this.sex = sex; this.address = address; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
创建对象:
Student s=new Student("CC","qwerty","男","银河系第二旋臂");
一般的套路:优点是比较简单,开发效率高,缺点是如果参数真的很多的话鬼知道每个对应的是什么意思啊。
Builder模式:优点是可以将构造器的setter方法名取成类似注释的方式,这样我们可以很清晰的知道刚才究竟设置的什么值,可读性较高,缺点是比较冗长。
原文地址:构建者(Builder)设计模式(又叫生成器设计模式)
参考文章: 设计模式之Builder模式
Java高效编程之Builder模式
相关文章推荐
- java设计模式——Builder(建造者模式(生成器模式))
- Java[Android]设计模式创建型设计模式之Builder模式+单例模式+原型模式
- Android设计模式学习(包含Java设计模式)-Builder模式-AJDesignMode03
- JAVA设计模式 — 生成器模式(Builder)
- Java设计模式--构建者模式(Builder)
- Java设计模式 创建模式-生成器模式(Builder)
- java设计模式---生成器模式(Builder pattern)
- Java 设计模式-建造者模式(Builder)Android讲解
- 设计模式学习之生成器模式(Builder)
- Java设计模式之Builder Pattern
- Android开发之Java设计模式入门篇
- Android开发之Java设计模式
- Android设计模式之Builder
- Java设计模式-----Builder建造者模式
- Android设计模式之Builder
- Android开发之Java设计模式
- 5.23种设计模式的Java版--Builder (建造)
- C#面向对象设计模式学习笔记(3) - Builder 生成器模式(创建型模式)
- C# 设计模式学习四 Builder生成器模式
- 设计模式之Builder(生成器模式)