Builder模式
来源:互联网 发布:激战2马乔丽捏脸数据 编辑:程序博客网 时间:2024/04/30 22:11
/** * * @author luoaz * */public class InstanceCanNotChange {private final int servingSize;private final int servings;private final int calories;private final int fat;private final int sodium;private final int carbohydrate;public static class Builder {// Required parametersprivate int servingSize;private int servings;// Optional parameters - initialized to default valuesprivate int calories = 0;private int fat = 0;private int sodium = 0;private int carbohydrate = 0;public Builder(int servingSize, int servings) {this.servingSize = servingSize;this.servings = servings;}public Builder calories(int calories) {this.calories = calories;return this;}public Builder fat(int fat) {this.fat = fat;return this;}public Builder sodium(int sodium) {this.sodium = sodium;return this;}public Builder carbohydrate(int carbohydrte) {this.carbohydrate = carbohydrte;return this;}public InstanceCanNotChange builder() {return new InstanceCanNotChange(this);}}private InstanceCanNotChange(Builder builder) {this.servingSize = builder.servingSize;this.servings = builder.servings;this.calories = builder.calories;this.fat = builder.fat;this.sodium = builder.sodium;this.carbohydrate = builder.carbohydrate;}}
优点:安全
与构造器相比,builder的微略优势在于,builder可以有多个可变参数。构造器就像方法一样,只能有一个可变参数。因为builder利用单独的方法来设置每个参数,你想要多少可变参数,它们就可以有多少个可变参数,直到每个setter方法都有一个可变参数。Builer模式十分灵活,可以利用单个builder构建多个对象。builder的参数可以在创建对象期间进行调整,也可以随着不同的对象而改变。builder可以自动填充某些域,例如每次创建对象时增加序列号
缺点:builder模式也有它自身的不足。为了创建对象,必须先创建它的构造器。虽然创建构建器的开销在实践中可能不是那么明显,但是在某些十分注重性能的情况下,可能就成问题了。Builder模式还比重叠构造器模式更加冗长,因此它只在有很多参数的时候才使用,比如4个或更多参数。但是记住,将来你可能需要添加参数。如果一开始就使用构造器或者静态工厂,等到类需要多个参数时才添加构建器,就会无法控制,那些过时的构造器或者静态工厂显得十分不协调。因此,通常最好一开始就使用构建器
简而言之:如果类的构造器或者静态工厂中具有多个参数,设计这种类时,Builder模式就是种不错的选择,特别是当大多数参数都是可选的时候。与使用传统的重叠构造器模式相比,使用Builder模式的客户端代码更易于阅读和编写,构造器也比JAVABEANS更安全。
摘抄自:Effective Java
- builder 模式
- Builder模式
- Builder 模式
- Builder模式
- builder模式
- builder模式
- Builder模式
- builder模式
- Builder模式
- Builder 模式
- Builder 模式
- Builder模式
- Builder模式
- builder模式
- builder模式
- builder模式
- Builder模式
- Builder模式
- IE7,ie8 ,火狐显示正常,ie6就乱码了解决方法
- CString工作原理和常见问题分析
- 在 Visual Studio 中将网站项目转换为 Web 应用程序项目
- 集成开源系统实现自动化构建、代码质量评估、项目信息统计
- 强烈推荐!!一个清华大学·生几天猎头生活的感想
- Builder模式
- 定义物料组(Material Group)
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用 【zz】
- 浅谈MTK平台下Android开发比较学习笔记
- 超链接
- Source Navigato rNG-4.4在ubuntu的简单的安装
- 列举本机串口(含虚拟串口)
- 验证码
- gsoap写一个c++ webservice