遇到多个构造器参数时,要考虑用构造器

重叠构造器模式:

创建对象时,我们需要一些必须的参数,从而区分它们,其他可选参数,我们一层一层的赋基本值。这样就提供了用户可选的多种传参方式。

缺点:当有多个参数时,不好处理

JavaBean模式:

通过setter方法,对类进行初始化赋值

Builder模式:(书上最推荐的方式)

书上提供了一个例子,如 NutritionFacts cocaCola = new NutritionFacts.Builder(240,8).calories(100).......build();

原文地址:https://www.cnblogs.com/kongkongFabian/p/10246417.html

时间: 2024-10-22 05:24:32

遇到多个构造器参数时,要考虑用构造器的相关文章

effective java读书札记值第2条:遇到多个构造器参数时要考虑用构造器

对于一个参数有多个的构造器的类,程序员一向习惯采用重叠的构造器模式. public class Person { private String Id; private String name; private String address; public Person(String id) { Id = id; } public Person(String name, String address) { super(); this.name = name; this.address = addr

遇到多个构造器参数时要考虑用构造器

一般的重叠构造器模式: public class NutritionFacts{ private final int one; private final int two; private final int three; public NutritionFacts(int one,int two,int three){ this.one = one; this.two = two; } public NutritionFacts(int one){ this(one,0); } public

第二条 遇到多个构造器参数时,要考虑用构建器

静态工厂和构造器都有个共同的局限性,就是它们都不能够很好的扩展到大量的可选参数. 如: public class NutritionFacts{ 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 Nu

Effective Item 2 - 遇到多个构造器参数时考虑使用Builder

静态工厂和够构造器有一个共同的局限性:遇到大量的参数时无法很好的扩展. 先说说构造器. 其实field不多时重叠构造器(telescoping constructor)是个不错的方法,易于编写也易于调用,这种方式在参数数量较少时也很常见. 但问题是参数很多(可能越来越多)时,比如(现在已经很难找到对多个参数进行重叠构造的代码了,于是在这里直接引用一下书中的代码): public class NutritionFacts { private final int servingSize; // (m

第二条:遇到多个构造器参数时要考虑用构建器

静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数. 假如一份营养成分的标签,有两个域是必须的,四个域是可选的. 1.重叠构造器模式 提供一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个构造器有两个可选参数,依次类推,直到最后一个构造器包含所有的可选参数. 缺点:谁作为第一个可选参数是一个问题,因为后一个包含两个可选参数的构造器必须传递值给第一个可选参数,导致需要设置许多本不想设置的参数,像是一个极端的例子NutritionFacts n = new Nutrit

第二条:遇到多个构造器参数时考虑使用构建器

遇到需要多个参数(参数可分为必需参数和非必需参数)才能实例化一个类的对象时,一般有三种方法: 1.重叠构造器 重叠构造器的方式可行,但是当有许多参数的时候,客户端的代码会很难编写,而且很容器出错. 2.JavaBean式的类 通过setter方法来为实例对象设置Field的值. 3.使用构建器

【读书笔记 - Effective Java】02. 遇到多个构造器参数时要考虑用构建器

类有多个可选参数的解决方案:1. 重叠构造器模式可行,但是当有许多参数的时候,客户端代码会很难编写,并且仍然较难以阅读.2. JavaBeans模式,调用一个无参构造器来创造对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数. 缺点:构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态.阻止了把类做成不可变的可能,需要程序员确保线程安全.3. Builder模式,模拟了具名的可选参数. 模式 优 劣 重叠构造器 写法最简单 多参数时候难读.难写.难

第二章:创建和销毁对象。ITEM2:遇到多个构造器参数时要考虑用构建器。

如果一个类中有大量的可选参数,有以下几种方式: 1.重叠构造器: package com.twoslow.cha2; /** * 重叠构造器可行,但是当由许多参数的时候,客户端代码很难编写. * @author sai * */ public class Item201 { private final int servingSize; private final int servings; private final int calories; private final int fat; pr

遇到多个构造器参数时要考虑用构建器——Effective Java 读书笔记

/** * 如果类的构造器或者静态工厂中具有多个参数,设计这种类时,Builder模式就是种不错的选择,特别是当大多数参数都是可选的时候. * 与使用传统的重叠构造器模式相比,使用Builder模式的客户端代码将更易于阅读和编写,构建器也比JavaBeans更加安全. * * @author 刘向峰 * */ public class NutritionFacts { // 所有的参数 private final int servingSize; private final int servin