package chape2;
/**
* effective_java 第二章 创建和销毁对象
* 书中实例练习
* 原则:
* 1.考虑用静态工厂方法来带特构造方法;-- 4-8
* 2.遇到多个构造方法的参数时要考虑用构建器 就是这个类有许多的变量 -- 9-13
* 当一个类有很多变量的时候,会用重叠构造方法(telescoping constructor) 就是构造方法中的参数递增
* 一个类中有很多的构造方法 参数的个数不同;解决这个问题的方法 首先是用javabean的方法 里面有很多的变量的
* seter和geter方法;这是我们常用的;但是有seter方法提供给外界 就导致了这类不能成为不可变类,这样就不能保证
* 传来的参数可能存在不一致性。解决这样的方法就是用builder模式 这个类就演示builder模式的例子
* bulder的不足 要创建实例先创建构建器 这儿有点内存开销,在对效率要求很高的程序要考虑;还有就是代码多了;
* 所以当参数有四个或者四个以上的时候,而且大多数的参数时可选的时候。使用构建器;
* @author lee
* 2009-11-15
*/
public class Chape2_1 {
public static void main(String[] args) {
// 实例化类 这样的代码易于阅读
Nuter nu = new Nuter.Builder (200,2).fat(10).sodium(20).build();
}
}
class Nuter
{
private final int size;
private final int sering;
private final int fat;
private final int sodium;
public static class Builder
{
//这两个参数时必须的参数
private final int size;
private final int sering;
//下面是可选的参数 设置了默认值
private int fat = 0;
private int sodium = 0;
public Builder (int size ,int sering)
{
this.sering = sering;
this.size = size;
}
public Builder fat (int val)
{
/**
* 断言的使用
* 在语法上,为了支持assertion,Java增加了一个关键字assert。它包括两种表达式,分别如下:
* assert expression1;
assert expression1: expression2;
在两种表达式中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象(Object)
,基本类型包括boolean,char,double,float,int和long。
由于所有类都为Object的子类,因此这个参数可以用于所有对象。
1、assert <boolean表达式>如果<boolean表达式>为true,则程序继续执行。如果为false,则程序抛出AssertionError,并终止执行。
2、assert <boolean表达式> : <错误信息表达式>如果<boolean表达式>为true,则程序继续执行。如果为false,则程序抛出java.lang.AssertionError,并输出<错误信息表达式>。
* javac -source 1.4 AssertTest.java
java -ea AssertTest
*/
assert val <0;
fat = val;
return this;
}
public Builder sodium (int val)
{
this.sodium = val;
return this;
}
public Nuter build ()
{
return new Nuter (this);
}
}
private Nuter (Builder buder)
{
this.size = buder.size;
this.sering = buder.sering;
this.sodium = buder.sodium;
this.fat = buder.fat;
}
}
分享到:
相关推荐
effective-java 配套代码
《Effective Java》第三版中文版目录 第一章 介绍 1 第二章 创建和销毁对象 4 1 考虑用静态工厂方法替换构造器 4 2 当遇到多个构造器参
Effective Java读书笔记.pdf
effective-java.pdf
Effective java 3 学习记录
Effective Java读书笔记,记载了大部分我觉的有用的东西,前半部分有代码说明,但后半部分的代码,太过琐碎,就没有整理
effective java 读书笔记,第二版自己摘要并翻译,以备速查。
Effective-Java Effective Java中文版第二版示例代码
【Effective Java】阅读笔记markdown 文件
《Effective Java》读书分享.pptx
代码优化:有效使用内存 Code Optimization: Effective Memory Usage pdf 英文版 清晰,该书中文版翻译质量很差,建议直接读英文版
15. 使类和成员的可访问性最小化 16. 在公有类中使用访问方法而非公有域 17.使可变性最小化:不可变类
Effective Java Effective Java Effective Java
构建高效的Java企业级系统是项困难的工作。本书详细介绍企业级计算技术中的常见问题,并描述使用企业级Java平台技术处理这些问题的方法。本书以若干条建议、揸南的形式,言简意赅地介绍了J2EE开发中的微妙之处。无论...
Effective Enterprise Java
effectiveJava的笔记
Java》书中的经验法则示例代码,结合Java源码来理解这些最佳实践,并应用于实际项目。 Effective Java, Third Edition Updated for Java 9, Best practices for ... the Java Platform the source code from the ...
java优秀源码有效的Java概念 Java源代码可强化概念我正在从Joshua Bloch的出色著作“ Effective Java”中学习或复习。