package effective;
/**
* @{# natureFcit.java Create on 2013-6-18 下午5:29:06 description:
* @author SHY
* @version 1.0
*/
// Builder Pattern
public class NutritionFacts {
public static void main(String[] args) {
/*
* 从下面的使用中可以看出,Builder模式模拟了具名参数,可以提高代码的可读性和维护性,降低使用的风险。
*
* 不过,Builder模式也有显著的缺点,最明显的就是每次创建对象的时候都要额外的创建一个builder对象,
* 这个对于注重性能的系统是一个问题。
*
* 另外,Builder模式从形式上也要比一般的构造函数复杂。所以Joshua建议除非构造函数的
* 参数很多,而且大部分都是可选的,否则首先还是不要考虑Builder模式。
*
* 还有,java中使用链式调用方法,很酷
*/
NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)
.calories(100).sodium(30).carbohydrate(29).build();
}
private final int servingSize; // required
private final int servings; // required
private final int calories; // optional
private final int fat; // optional
private final int sodium; // optional
private final int carbohydrate; // optional
public static class Builder {
// Required parameters
private final int servingSize;
private final int servings;
// Optional parameters - initialized to default values
private 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 val) {
calories = val;
return this;
}
public Builder fat(int val) {
fat = val;
return this;
}
public Builder sodium(int val) {
sodium = val;
return this;
}
public Builder carbohydrate(int val) {
carbohydrate = val;
return this;
}
public NutritionFacts build() {
return new NutritionFacts(this);
}
}
private NutritionFacts(Builder builder) {
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
}
分享到:
相关推荐
adapter bridge build chainOfResp command decorator factory iterator mediator observer proxy state visitor 设计模式,java实现,如有纰漏请指正,谢谢
本示例"Bundle_bundle.zip"旨在演示如何处理包含两种不同加载模式的Sprite Atlas:Include in Build模式和非Include in Build模式。 1. **Include in Build模式**: 在Unity中,当一个Sprite Atlas设置为"Include ...
直观上判断如果是development build模式打包出来的安装包,在游戏的画面的右下角会有development build的水印,且在切换场景也不会消失
在Android开发过程中,`BuildConfig.DEBUG` 是一个非常重要的常量,它用于判断当前应用是否处于调试模式。这个常量的值在构建过程中由Gradle自动生成,通常在开发阶段,`BuildConfig.DEBUG` 应该返回 `true`,以便...
### Windows 10 Build 10130 引入夜间模式 #### 一、概述 随着技术的进步和用户需求的变化,操作系统也在不断地迭代更新,以满足用户对更高效、更舒适的操作体验的需求。其中,夜间模式作为一种重要的用户体验优化...
3. **支持新的API和语言特性**:随着Android系统版本的更新,Build Tools也会随之支持新的API级别和编程语言特性,如Lollipop(Android 5.0)引入的Material Design和多窗口模式等。 4. **错误检查和警告提升**:新...
3. **使用兼容模式**:部分较新的MSBuild版本可能可以兼容旧的项目格式,通过设置兼容标志或者使用特定命令行参数来使新版本MSBuild能够处理旧版项目文件。 4. **使用第三方工具或脚本**:有些第三方工具如GYP...
【build-tools 24.0.3-windows】是Android开发中的一个重要组件,它属于Android SDK Build Tools的一部分。这个版本的Build Tools专为Windows操作系统设计,提供了构建Android应用程序所需的工具集合。在Android应用...
在debug模式下构建项目,并启用断言功能,可以帮助分析器排除不可达代码路径,显著降低误报率。通过`-v`参数调节冗余输出,甚至将其重定向至日志文件,有助于生成详尽的分析记录,为后续的缺陷追踪提供依据。 #### ...
### Windows 10 Build 10147:Edge 浏览器新增暗色显示模式及多项改进 随着正式版 Windows 10 发布日期的临近,越来越多的新特性被逐步披露出来。最近泄露的 Build 10147 版本中,最为引人注目的便是 Edge 浏览器...
在发布模式下,ProGuard默认启用。 - **zipalign**:此工具用于对APK进行最后一步的优化,确保所有文件在存储时都对齐到4字节边界,以提高设备的内存访问性能。 **2. 安装与使用** 要使用Build-tools 20.0.0,...
安卓 Build.prop 参数详解 Build.prop 文件是 Android 系统中一个核心文件,负责定义系统初始的一些参数属性、功能的开放等。通过调整/增加参数可以达到较调系统性能偏重点和附加功能开启的作用。本文将对 Build....
- **Doze模式**:为了提升电池续航,系统在设备长时间未使用时会进入深度睡眠状态。 - **App Links**:允许应用声明对特定URL的归属,以便直接打开相应的应用,而不是浏览器。 - **指纹识别API**:提供了API让应用...
使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* * 递归类型参数: java 没有self,为了子类能返回正确的类型【即类型为Build的子类】 * */ abstract static...
FortiGate 100D 防火墙 FortiOS v6.2.0,build0866 固件 FortiOS 6.2第一个版本
5. **进入刷机模式**:根据设备的不同,可能需要进入恢复模式(如Android的ClockworkMod Recovery或TeamWin Recovery Project)或下载模式。 6. **清除数据和缓存**:在刷机前,一般需要清除设备的分区数据和缓存,...
在本案例中,我们讨论的是微软提供的ISCSI客户端软件——"Initiator-2.08-build3825-x86fre"。这个软件是用于x86架构计算机的,即32位系统,版本号为2.08-build3825。 ISCSI发起器(Initiator)是ISCSI技术的关键...
2. **热模块替换**(Hot Module Replacement):在开发模式下,Bobril Build 可以实现在不刷新整个页面的情况下更新模块,提升开发效率。 3. **自动编译**:Bobril Build 集成了Babel等编译工具,能够将现代...
5. **开发模式**:使用`qp-build dev`启动开发服务器,实现热重载和实时编译。 ### 三、qp-build与其他构建工具对比 qp-build 相较于其他常见的前端构建工具如Webpack、Gulp、Grunt,可能有以下特点: 1. **轻量...
3、多用户模式手动切换,可启动/关闭新留言本申请模式。4、新注册模式手动切换,可启动/关闭新用户注册,以开放/保护留言本。5、自由留言模式手动切换,可启动/关闭用户不用密码发言功能,也可强制必须使用密码发言...