Effective java 第二章 对象 (1)

这章主要说了对象的 创建和销毁,怎样避免无谓,过多的对象,以及创建对象的几个方法

 一.使用静态工厂方法代替构造器,

正常的创建类的方法    OneObject  oneObject=new OneObject();       这样写的话,每次都会创建一个新的对象

静态工厂方法            

public class OneObject {

private static OneObject oneObject=new OneObject();
private String name;
public static OneObject getOneObject(){

return oneObject;
};

}

1.这样写的话,不管使用几次 getOneObject() ,也只有一个OneObject 对象

2.  在增加一个方法 ,getOneObject2 ,其中TowObject,ThreeObjectshix是OneObject的子类对象

public static OneObject getOneObject2(Integer type){
if(type==1){
return new TowObject();
}
else{
return new ThreeObject();
}
};

这样 会根据参数的不同生成OneObject不同的子类

书上说还有几个好处,什么名字好记啊之类的就不意义列举了

二. 当Bean有很多属性时,可以考虑用构建器

package TheOne;

public class TwoObject {
private int a;
private int b;
private int c;
public static class Bulider {
private int a;
private int b;
private int c;
public Bulider a(int a) {
this.a = a;
return this;
}
public Bulider b(int b) {
this.b = b;
return this;
}
public Bulider c(int c) {
this.c = c;
return this;
}
public TwoObject bulid() {
return new TwoObject(this);
}
}
public TwoObject(Bulider b){
this.a=b.a;
this.b=b.b;
this.c=b.c;
}
public static void main(String[] args) {
TwoObject to=new TwoObject.Bulider().a(1).b(2).bulid();
System.out.println(to.a);
}
}

这样写起来可读性性更高,但是也有一些缺点,就是构造Bulider的时候开销稍微高点,如果是注重性能的情况下,就不必考虑

时间: 2024-10-09 17:30:35

Effective java 第二章 对象 (1)的相关文章

Effective java 第二章 对象 (2)

不要创建不必要的对象 一.一些对象创建后不会在更改,可重复使用的对象不比在重新创建. 二.能使用基本类型计算而尽量使用基本类型,包装类型在效率上比基本类型要低  比如: public static void main(String[] args) { Long i=0L; //long i=0L; for(int j=0;j<1000000;j++){ i+=1; } 循环一百万次    Long 类型  时间差  32      long 类型  时间差  7     原因是 ,使用Long类

Effective java 第二章创建和销毁对象 读书笔记

建和销毁对象 一般有两种方式,一种是获得本身的实例,最常用的方法就是提供一个共有的构造器.第二个方法是,类可以提供一个共有的静态工厂方法. 静态工厂方法与构造器不同的三大优势: 有名字: 调用时不用创建新的对象: 返回原来类型的任何子类型对象. 第四大优势: 在创建参数化类型实例的时候,它们使代码变得更加简洁. 服务提供者框架 三个组件: 服务接口 提供者主持API 服务访问API 可选: 服务提供者接口 静态工厂方法的缺点: 类如果不含共有的或者受保护的构造器,就不能被子类化: 它们与其他的静

[Effective Java]第二章 创建和销毁对象

第一章      前言 略... 第二章      创建和销毁对象 1.            考虑用静态工厂方法代替构造器 创建对象方法:一是最常用的公有构造器,二是静态工厂方法.下面是一个Boolean的简单示例: public static Boolean valueOf(boolean b) { return (b ? Boolean.TRUE : Boolean.FALSE); } l  静态工厂方法与构造器不同的第一大优势在于,它们有名称. 作用不同的公有构造器只能通过参数来区别(因

Java第二章----对象和类

从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对象 名词解释 OOA-Object Oriented Analysis-面向对象分析 OOD-Object Oriented Design-面向对象设计 OOP-Object Oriented Programming-面向对象程序设计 面向对象基本特性 万物皆可为对象:任何一件事物都可以表示为程序中

[读书笔记]Effective Java 第二章

考虑用静态工厂方法代替构造器 静态工厂方法第一大优势是可以用特有的名称.常见的类创建实例需要用构造函数,而当需要两个构造函数时,我们需要在参数列表做区分才能写出两个构造方法.使用静态工厂模式,可以规避方法名=类名的限制,使用更易读的方法呈现. 静态工厂方法第二大优势是不必在每次调用的时候创建一个新的实例.这点和单例设计模式有些类似,在使用不可变类的时候可以预先构建实例并缓存,之后可以重复利用,避免创建不必要的重复对象,也可以用静态工厂保证这是一个单例.可以确保不会存在两个相等的实例,即当且仅当a

Java 第二章 变量 、数据类型和运算符 笔记

Java 第二章 变量 .数据类型和运算符 一.变量:存储数据的一个基本单元. 二.变量的声明和赋值: 1)声明并赋值:数据类型 变量名=值;      例:int  price=1000; 2)声明.赋值分两步:数据类型 变量名;   例: int  price; 变量名=值;              price=1000; 三.数据类型2种: 1)基本数据类型8种: Byte 长度:-128~127(-2的7次方到2的7次方减1) Short   -2的15次方到2的15次方减1 Int

Effective Java 第二版 Enum

/** * Effective Java 第二版 * 第30条:用enum代替int常量 */ import java.util.HashMap;import java.util.Map; public class EnumTest { /*媒体操作*/ public final static int START = 1; public final static int PAUSE = 2; public final static int RESUME = 3; public final sta

Java 第二章

第二章笔记 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据.说白了,变量就是代表程序运行时存放数据的地方 数据的存放: 磁盘.内存卡.U盘.光盘.内存条.固态.机械硬盘等等 简单的信息(临时的信息)纸 人把信息存在大脑 变量怎么在内存中存储 已将数据存储打内存中怎么去找 分配后的内存会有内存地址(内存地址不好记忆) :通过变量名可以简单快速地找到它存储的数据 Java定义的常用数据类型有

一切都是对象 Thinking in Java 第二章

2.1 用引用操作对象 1.对象和引用联系起来,就可以通过引用来操作对象: 2.引用亦可单独存在,即没有和任何对象联系起来:对没有和对象联系起来的引用操作,会报错: 2.2 必须由你创建所有对象 1.存储到什么地方 寄存器 堆栈:*快速存储销毁:基本类型存储的地方 堆:*常量池:一般对象存储的地方 常量存储 非RAM 2. 特例:基本类型 保存在 堆栈 中,这个变量直接存储值,所以更加高效一些: 高精度数字:BigInteger,BigDecimal; 2.3 永远不用销毁对象 垃圾回收机制 2