《Effect Java》学习笔记1———创建和销毁对象

第二章 创建和销毁对象

1.考虑用静态工厂方法代替构造器

  优势:

    1.有名称

    2.不必在每次调用它们的时候都创建一个新的对象;

      3.可以返回原返回类型的任何子类型的对象;

      JDBC(Java Database Connectivity)

      服务提供者框架(Service Provider Framework)

         服务接口、提供者注册API、服务访问API、服务提供者接口(负责创建其服务实现的实例);

    4.在创建参数类型实例的对象,它们使代码变得更加简洁

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

  class.newInstance 破坏了编译时的异常检查(Builder弥补不足)

  总:如果类的构造器或静态工厂中具有多个参数,考虑用Builder模式;

3.用私有构造器或者枚举类型强化Singleton属性

  单元素的枚举类型已经成为实现Singleton的最佳方法

4.通过私有化构造器强化不可实例化的能力

  throw new AssertionError(); (构造器内)

  可在上面加入注释,便于理解,如下:

    suppress default coustructor for noninstratiability.

时间: 2024-10-18 04:46:46

《Effect Java》学习笔记1———创建和销毁对象的相关文章

Effective Java 学习笔记之创建和销毁对象

一.考虑用静态工厂方法代替构造器 1.此处的静态工厂方法是指返回指为类的对象的静态方法,而不是设计模式中的静态工厂方法. 2.静态工厂方法的优势有: a.使用不同的方法名称可显著地表明两个静态工厂方法的不同,而不像构造器,名字只能是类名. b.并不是每次调用静态工厂方法,都会重新构造一个新的对象. c.可以返回类型的子类型的对象. d.创建参数化类型的实例时,代码变得简洁了. 3.静态工厂方法的缺点有: a.类如果不含有公有的或者受保护的构造器,就不能被子类化(静态工厂方法的存在导致构造器存在的

Effective Java 读书笔记(2创建和销毁对象)

第一章是引言,所以这里不做笔记,总结一下书中第一章的主要内容是向我们解释了这本书所做的事情:指导Java程序员如何编写出清晰.正确.可用.健壮.灵活和可维护的程序. 2.1考虑用静态工厂方法代替构造器 静态工厂方法与构造器相比有四大优势: (1)静态工厂方法有名称,具有适当名称的静态工厂方法易于使用.易于阅读: (2)不必每次在调用它们的时候都创建一个新的对象: (3)可以返回原返回类型的任何子类型的对象: (4)在创建参数化类型实例的时候,它们使代码变得更加简洁. 同时静态工厂方法也有两大缺点

effective java读书笔记1——创建和销毁对象

今天刚开始读effective java,中文版的读起来很拗口,但感觉收获很多. 另外,这本书的内容是针对Java 1.5和1.6的. 在这里整理一下第2章:创建和销毁对象 的内容. 第一条:考虑用静态工厂方法代替构造器 这一条针对的情景是要获得类的实例时.一般说来,想要获得类的实例,都是通过构造函数(书里叫做构造器). 最常见的构造函数是这样的,没有返回参数,名字和类名相同. public class A{ public A(int a){ //构造函数内容 ... } } 而所谓的静态工厂,

Effective Java 读书笔记之一 创建和销毁对象

一.考虑用静态工厂方法代替构造器 这里的静态工厂方法是指类中使用public static 修饰的方法,和设计模式的工厂方法模式没有任何关系.相对于使用共有的构造器来创建对象,静态工厂方法有几大优势: 1.静态工厂方法有名称:通过有意义的静态工厂方法名称可以很好的表达工厂方法的作用,易于区别功能相似的多个静态工厂方法. 2.静态工厂方法可以有更复杂的生产对象逻辑,不仅仅是新建一个对象:既可以新建一个对象,也可以使用缓存的对象. 3.静态工厂方法可以返回原返回类型的任何子类型的对象:由于接口不能有

Java学习笔记-13.创建窗口和程序片

1.init()方法:程序片第一次被创建,初次运行初始化程序片时调用. start()方法:每当程序片进入web浏览器中,并且允许程序片启动他的常规操作时调用(特殊的程序片被stop()关闭):同样在init()后调用. paint()方法:基础类Component的一部分(继承结构中上朔三级).作为update()的一部分调用,以便对程序片的画布进行特殊的描绘. stop()方法:每次程序片从web浏览器的视线中离开时调用,时程序片能关闭代价高昂的操作:同样在调用destroy()前调用. d

Java学习笔记2-一切都是对象

创建句柄:String s = "abc"; 创建对象:String s= new String("abc"); 程序运行时数据可能保持的位置: 寄存器(register):最快的,但是有编译器分配,我们没法控制 堆栈(stack):存在于 RAM 区域,Java 对象句柄/引用和基础类型的变量值会存放在这里 堆(heap):堆里分配存储空间会花掉更长时间,Java 对象实例和数组会保存在这里 静态存储(static storage):RAM 中的固定位置,使用 s

Java学习笔记-12.传递和返回对象

1.Clone()方法产生一个object,使用方法后必须产生的object赋值. Vector v2 = (Vector)v.clone(); 2.Clone()方法在object中是保护类型方法,如果自己创建的类需要使用Clone()方法的话需要自己重新写一个,并且继承Cloneable接口. package tweleve; import java.util.*; class MyObject implements Cloneable { int i; MyObject(int ii) {

java学习笔记(三)类,对象,包

在面向对象编程中,程序不是围绕着要解决的任务来设计,而是围绕着要解决的问题的对象来设计. 类:是具有相同属性和行为的一组对象的集合,类中要包含这个类的属性和方法,但并不是所有的类都必须包含属性和方法. 例:编写一个学生类,学生拥有学号,姓名,年龄,性别等. /** *学生类 */ public class Student{ /* 属性 */ public int stuNo; public String name; public int age; public String sex; /* 方法

Effective Java(1)-创建和销毁对象

原文地址:https://www.cnblogs.com/Johar/p/10556218.html