`
auguslee
  • 浏览: 99591 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Effective In Java 笔记之构建器

阅读更多
Effective in java 中推荐一种叫构建器的方法, 其实质就是在类中创建一个静态内部类来完成对元素值的注入,effective in java 中推荐当参数多于四个的时候使用此方式, 下面上代码。
public class NutritionsFacts {
	private int servingSize;
	private int servings;
	private int calories;
	private int fat;
	private int sodium;
	private int carbohydrate;

	public static class Builder {
		private int servingSzie;
		private int servings;
		private int calories = 0;
		private int fat = 0;
		private int carbohydrate = 0;
		private int sodium = 0;

		public Builder(int servingSize, int servings) {
			this.servingSzie = servingSize;
			this.servings = servings;
		}

		public Builder calories(int val) {
			calories = val;
			return this;
		}

		public Builder fat(int val) {
			fat = val;
			return this;
		}

		public Builder carbohydrate(int val) {
			carbohydrate = val;
			return this;
		}

		public Builder sodium(int val) {
			sodium = val;
			return this;
		}

		public NutritionsFacts build() {
			return new NutritionsFacts(this);
		}
	}

	public NutritionsFacts(Builder builder) {
		servingSize = builder.servingSzie;
		servings = builder.servings;
		calories = builder.calories;
		fat = builder.fat;
		sodium = builder.sodium;
		carbohydrate = builder.carbohydrate;
	}

	public static void main(String[] args) {
		NutritionsFacts cocaCola = new NutritionsFacts.Builder(240, 8)
				.calories(100).sodium(35).carbohydrate(27).build();
		System.out.println(cocaCola.toString());
	}

	@Override
	public String toString() {
		return "[" + servingSize + " , " + servings + ", " + calories + ", "
				+ fat + ", " + sodium + ", " + carbohydrate + "]";
	}
}


我自己写了一种方式,我觉得和上面的没有什么区别,而 effective in java 上说,这种方式很容易产生潜在的错误, 因为要设置的参数太多了, 所以会出现漏掉,造成空指针异常神马的, 哎, 不管了。看个人爱好了。上码:
public class MyNutritionsFacts {
	private int servingSize;
	private int servings;
	private int calories;
	private int fat;
	private int sodium;
	private int carbohydrate;

	public int getServingSize() {
		return servingSize;
	}

	public MyNutritionsFacts setServingSize(int servingSize) {
		this.servingSize = servingSize;
		return this;
	}

	public int getServings() {
		return servings;
	}

	public MyNutritionsFacts setServings(int servings) {
		this.servings = servings;
		return this;
	}

	public int getCalories() {
		return calories;
	}

	public MyNutritionsFacts setCalories(int calories) {
		this.calories = calories;
		return this;
	}

	public int getFat() {
		return fat;
	}

	public MyNutritionsFacts setFat(int fat) {
		this.fat = fat;
		return this;
	}

	public int getSodium() {
		return sodium;
	}

	public MyNutritionsFacts setSodium(int sodium) {
		this.sodium = sodium;
		return this;
	}

	public int getCarbohydrate() {
		return carbohydrate;
	}

	public MyNutritionsFacts setCarbohydrate(int carbohydrate) {
		this.carbohydrate = carbohydrate;
		return this;
	}

	public static void main(String[] args) {
		MyNutritionsFacts m = new MyNutritionsFacts().setCalories(10)
				.setCarbohydrate(20).setFat(30).setServings(40)
				.setServingSize(50).setSodium(60);
	}
}


请多多指教。
分享到:
评论

相关推荐

    effective java 读书笔记

    《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...

    effectiveJava的笔记

    以下是对《Effective Java》笔记中可能涉及的关键知识点的详细解读: 1. **单例模式**:书中强调了如何正确实现单例模式,推荐使用`enum`来创建线程安全且唯一的实例,避免传统双重检查锁定的潜在问题。 2. **构造...

    Effective-Java读书笔记(上)

    ### Effective Java读书笔记(上) #### 第一章 引言 本书主要针对Java开发者提供了大量实用的编程指导建议,帮助读者提升代码质量和程序性能。在本章节中,我们将重点介绍对象的创建与销毁,以及一些重要的设计...

    java入门级学习笔记

    【Java入门级学习笔记】 ...总之,Java学习笔记旨在为初学者提供全面的学习路径,从基础知识到核心概念,再到实际应用,逐步构建扎实的Java编程基础。通过持续学习和实践,你可以逐渐掌握这门强大且多用途的语言。

    java学习PDF下载地址全 百度云盘下载

    Java编程语言是全球范围内广泛应用的开发语言之一,尤其在企业级应用、云计算、大数据和移动应用等领域占有重要地位。对于初学者来说,掌握Java的基本概念和技术是至关重要的。本资源集合提供了一份完整的“Java学习...

    java7hashmap源码-for-java:java学习笔记

    Java学习笔记 Effective Java Topic2:插件销毁对象 2. 多参数情况 使用重叠构造器; 使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* * 递归类型参数: ...

    java书籍

    1. **《核心Java笔记》(core-java-notes)**:这本书可能包含了Java语言的核心概念,如变量、数据类型、控制流(条件语句、循环)、类与对象(封装、继承、多态)、异常处理、文件I/O、集合框架(ArrayList、...

    Java心得 学JAVA必看

    此外,还可以参考一些经典书籍,如《Effective Java》等。 #### 18. 善用搜索引擎 遇到问题时,学会利用搜索引擎查找答案是非常重要的。Google等搜索引擎提供了丰富的资源,只需输入关键词就能找到大量相关的信息。...

    Maven 2 学习笔记.txt

    根据提供的文件信息,我们可以深入探讨Maven的基本概念及其在构建Java项目中的具体应用。Maven是一种流行的自动化构建工具,主要用于Java项目的构建、依赖管理和项目信息管理。以下将围绕标题、描述以及部分内容中...

    java学习计划

    - **书籍**:《Effective Java》、《Java Concurrency in Practice》、《Clean Code: A Handbook of Agile Software Craftsmanship》等经典书籍深入讲解Java编程技巧和最佳实践。 - **社区与论坛**:Stack Overflow...

    下面是我对于JAVA学习的一些心得体会

    1. 阅读经典书籍:诸如《Effective Java》、《Java核心技术卷》等书籍能提供深入的见解和实例,帮助深化理解。 2. 参加在线课程和研讨会:利用Coursera、Udemy等平台的课程,获取专业讲师的指导,通过实践项目提升...

    BookReading:读书笔记

    在《BookReading》的笔记中,你会看到对《Thinking in Java》这本书的解读,这本书是Bruce Eckel的经典之作,详细介绍了Java的基础知识和高级特性。你将了解到如何创建和使用类,如何处理异常,以及如何进行多线程...

    关于Java的书籍阅读、关于NLP的论文阅读和相关算法、想法的各种md文档.zip

    在这个压缩包中,可能包含了一些经典的Java书籍的电子版或者读书笔记,如《Effective Java》、《Java并发编程实战》等。这些书籍可以帮助读者深入理解Java语言的核心特性,学习如何编写高效、可维护的代码,并了解多...

    drools学习笔记

    对于学习 drools 的初学者,理解这些基础概念至关重要,它们将帮助你构建复杂的规则系统,实现业务逻辑的自动化和智能化。在实际应用中,根据需求灵活运用这些特性,可以极大地提升软件系统的可维护性和扩展性。

    Clojure Handbook (by jamesqiu).pdf

    作者提到,这种方法受到广泛赞誉的《Effective Java》的启发,该书在介绍Java编程时也尽量避免长篇代码,而是采用短小精悍的代码段落。 **5. 关于文档的定位** Clojure Handbook不是严格的教程,也不是纯粹的手册...

    前辈的c++50个建议

    通过比较C++与其他编程语言(如Java、Python等)的异同之处,可以加深对C++特性的理解。同时也能拓宽视野,了解到不同场景下最适合使用的工具。 ### 26. 实践是检验真理的唯一标准 无论理论知识多么丰富,最终还是...

    学习c++的50条忠告(初学者必看)

    - 推荐学习《Thinking in C++》,这本书对于理解面向对象编程非常有帮助。 - **建议**:同时参考《The C++ Programming Language》和《Inside The C++ Object Model》,这两本书对深入理解C++标准库和对象模型非常...

    给C++初学者的忠告

    - **解释**:作为一门功能强大的编程语言,C++具备高度的灵活性与控制力,但这也意味着它比其他一些现代语言(如Python或Java)更难上手。初学者在学习过程中会遇到诸多挑战,比如指针、内存管理等复杂概念。 - **...

Global site tag (gtag.js) - Google Analytics