Effective JAVA 创建和销毁对象 遇到多参构造器考虑使用构建器
//构建器抽象类,为不同类的实现提供 public interface Builder<T> {public T build(); }/*** @描述: 营养表*/ public class NutritionFacts {private final int servingSize;// requiredprivate final int servings;// requiredprivate final int calories;// optionalprivate final int fat;// optionalprivate final int sodium;// optionalprivate final int carbohydrate;// optionalpublic static class Builder1 implements Builder<NutritionFacts>{private final int servingSize;// required 食用分量private final int servings;// required (食品等的)一份private int calories;// optional 卡路里 private int fat;// optionalprivate int sodium;// optional 钠private int carbohydrate;// optional 碳水化合物;糖类public Builder1(int servingSize,int servings){this.servingSize = servingSize;this.servings = servings;}public Builder1 calories(int calories) {this.calories = calories;return this;}public Builder1 fat(int fat) {this.fat = fat;return this;}public Builder1 sodium(int sodium) {this.sodium = sodium;return this;}public Builder1 carbohydrate(int carbohydrate) {this.carbohydrate = carbohydrate;return this;}@Overridepublic NutritionFacts build() {return new NutritionFacts(this);}}private NutritionFacts(Builder1 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;}public static void main(String[] args) {NutritionFacts cocacola = new NutritionFacts.Builder1(240, 80).calories(100).sodium(35).carbohydrate(27).build();} } 为非必须参数设置值,返回Build自身可以把调用链接起来 好处: 1、可以用单个builder创建多个对象,builder的参数可以在创建对象期间调整,可以随着对象不同而改变。builder可以自动填充某些域,例如每次创建对象时自动增加序号。 2、这是一个很好的抽象工厂(abstract factory)。客户端只要将这样一个builder传给方法,该方法能为客户端创建一个或多个对象。 一个通用类型的bulider public interface Builder<T>{public T build(); }
转载于:https://www.cnblogs.com/sallet/p/4431933.html
Effective JAVA 创建和销毁对象 遇到多参构造器考虑使用构建器相关推荐
- Effective Java 创建和销毁对象 2.遇到多个构造器参数时要考虑用构建器
静态工厂跟构造器都有一个共同的局限性:不能很好的扩展到大量的参数. 例: package com.example.yancy.yancy; /** * Created by yancy on 201 ...
- java创建和销毁一个对象_有效的Java –创建和销毁对象
java创建和销毁一个对象 创建和销毁对象(第2章) 这是Joshua Blochs的< 有效的Java>第2章的简短摘要.我仅包括与自己相关的项目. 静态工厂(项目1) 静态工厂与构造函 ...
- 有效的Java –创建和销毁对象
创建和销毁对象(第2章) 这是Joshua Blochs的< 有效的Java>第2章的简短摘要.我仅包括与自己相关的项目. 静态工厂(项目1) 静态工厂与构造函数的一些优点: 工厂方法的名 ...
- Effective Java:创建和销毁对象
前言: 读这本书第1条规则的时候就感觉到这是一本很好的书,可以把我们的Java功底提升一个档次,我还是比较推荐的.本博客是针对<Effective Java>这本书第2章所写的一篇读书笔记 ...
- Effective Java(1)-创建和销毁对象
Effective Java(1)-创建和销毁对象 转载于:https://www.cnblogs.com/Johar/p/10556218.html
- Effective java 总结1 - 创建和销毁对象
Effective java 总结 - 创建和销毁对象 第1条 用静态工厂方法代替构造器 优势 静态工厂方法有名称 不必每次调用的时候创建一个新的对象 可以返回原返回类型的任何子类型对象 返回对象的类 ...
- 《Effective Java》学习笔记 第二章 创建和销毁对象
第二章 创建和销毁对象 何时以及如何创建对象,何时以及如何避免创建对象,如何确保他们能够适时地销毁,以及如何管理对象销毁之前必须进行的各种清理动作. 1 考虑用静态工厂方法代替构造器 一般在某处获取一 ...
- [Effective Java]第二章 创建和销毁对象
第一章 前言 略... 第二章 创建和销毁对象 1. 考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Bool ...
- Effective Java (3rd Editin) 读书笔记:1 创建和销毁对象
1 创建和销毁对象 Item 1:考虑用静态工厂方法取代构造器 public static Boolean valueOf(boolean b) {return (b ? TRUE : FALSE); ...
- Effective Java读书笔记---二、创建和销毁对象
二.创建和销毁对象 何时以及如何创建对象, 何时以及如何避免创建对象, 如何确保它们能够适时地销毁, 如何管理对象销毁之前必须进行的各种清理动作 1.用静态工厂方法代替构造器 优势: 它们有名称 不必 ...
最新文章
- centos加单个ip和批量添加
- boost::iterator_range相关的测试程序
- java拆装_Java自动拆装包
- php怎么分割页面,用html如何把页面分割成多个文件,由多个文件拼接而成?
- spring mvc 传中文 到controller层乱码的 解决方法
- 如何对一个对象进行深拷贝
- 通过网络连接检测计算机病毒,网络安全习题及答案
- 基于summernote的富文本编辑器,粘贴时去除word、html格式
- 关于Ajax的一揽子工程(2)
- Foxit PDF SDK for iOS--零基础Cordova开发
- php解析今日头条视频下载,今日头条视频的地址解析下载
- android屏幕大小字体大小,Android字体大小自适应不同分辨率的解决办法
- 什么是“可维护性”?
- js判断身份证是否合法
- 计算机学院毕业设计文化衫,毕业文化衫设计大赛
- c语言使用time函数计时,C语言中的计时方法:time
- 第一次独立使用大型无人船记录日志—第2天
- 谁开启了协同领域的潘多拉盒子?
- 索尼xz2android设置向导,安卓9.0上线:索尼XZ2 Premium更新喜迎全面屏新操作!
- 用友增资致远1200万 国内最大OA厂商发布新品
热门文章
- 区块链测试工具 Caliper性能测试工具是什么
- linux开机自动挂载ntfs,linux 开机自动挂载 NTFS 磁盘(Linux Mint、Ubuntu)[解决挂载 NTFS 后 Windows “快速启动”导致的只能只读模式挂载]...
- java反射 javabean_Java反射之模仿JavaBean接收表单参数.
- java双向链表结构_【Java数据结构】2.3双向链表的迭代实现
- django判断ajax,Django ajax 检测用户名是否已
- Leetcode之插入区间
- ubuntu20.4安装 mariadb 最新版
- IDEA 常用快捷键 常用插件 2
- 阶段3 3.SpringMVC·_07.SSM整合案例_03ssm整合之编写Spring框架
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_12 注入集合数据