Builder模式在Java中的应用
来源:互联网 发布:淘宝买家福利晒图 编辑:程序博客网 时间:2024/06/06 03:38
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则。
我们常常会面临编写一个这样的实现类(假设类名叫DoDoContact),这个类拥有多个构造函数,
DoDoContact(String name);
DoDoContact(String name, int age);
DoDoContact(String name, int age, String address);
DoDoContact(String name, int age, String address, int cardID);
这样一系列的构造函数主要目的就是为了提供更多的客户调用选择,以处理不同的构造请求。这种方法很常见,也很有效力,但是它的缺点也很多。类的作者不得不书写多种参数组合的构造函数,而且其中还需要设置默认参数值,这是一个需要细心而又枯燥的工作。其次,这样的构造函数灵活性也不高,而且在调用时你不得不提供一些没有意义的参数值,例如,DoDoContact(“Ace”, -1, “SH”),显然年龄为负数没有意义,但是你又不的不这样做,得以符合Java的规范。如果这样的代码发布后,后面的维护者就会很头痛,因为他根本不知道这个-1是什么含义。对于这样的情况,就非常适合使用Builder模式。Builder模式的要点就是通过一个代理来完成对象的构建过程。这个代理职责就是完成构建的各个步骤,同时它也是易扩展的。下面是改写自Effective Java里面的一段代码:
public class DoDoContact {
private final int age;
private final int safeID;
private final String name;
private final String address;
public int getAge() { return age;}public int getSafeID() { return safeID;}public String getName() { return name;}public String getAddress() { return address;}public static class Builder { private int age = 0; private int safeID = 0; private String name = null; private String address = nul //构建的过程 public Builder(String name) { this.name = name; } public Builder age(int val) { age = val; return this; } public Builder safeID(int val) { safeID = val; return this; } public Builder address(String val) { address = val; return this; } public DoDoContact build() { // 构建,返回一个新对象 return new DoDoContact(this); }}private DoDoContact(Builder b) { age = b.age; safeID = b.safeID; name = b.name; address = b.address;}}DoDoContact ddc = new DoDoContact.Builder("Ace").age(10) .address("beijing").build();System.out.println("name=" + ddc.getName() + "age =" + ddc.getAge() + "address" + ddc.getAddress());
- Builder模式在Java中的应用
- Builder模式在Java中的应用
- Builder模式在Java中的应用
- Builder模式在Java中的应用
- Builder模式在Java中的应用
- Builder模式在Java中的应用
- Builder模式在Java,Android中的应用
- builder模式在游戏设计中的应用
- Android Builder模式在开发中的应用
- java中的builder模式
- Builder模式在网站自动生成系统中的应用
- Builder模式——AlertDialog中的Builder简单应用
- 观察者模式在Java编程中的应用
- MVC模式在Java Web中的应用
- Singleton 模式在 Java 中的应用
- Decorator模式在JAVA中的IO应用
- 单例模式在JAVA中的应用
- 设计模式在Java/Android中的应用
- android学习之路:关于zipalign
- java将实体类文件改为链式编程模式
- Android面试题系列--1
- unable to load texture at BitmapTexture.cpp:270
- 如何快速阅读——《技能篇》
- Builder模式在Java中的应用
- GAN模型总结
- 系统学习深度学习(三十四)--ConvNets目标检测概述
- myeclipse导入js文件报错
- spark-shell 基础操作(持续更新)
- 字符输出流,转换流,对象输入/输出流
- ueditor引入公式插件
- Java基础数组总结
- SSH04---分页