`
schumee
  • 浏览: 25851 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Effective Java 学习笔记第3条 --- 通过私有的构造函数强化不可实例化的能力

阅读更多

      在面向对象程序设计中,假如存在太多只有静态属性和静态方法的类;那么,面向对象的思想可能在这会损失殆尽。但是,并不能说面向对象的程序中就不应该出现 只有静态属性和静态方法的类,相反,有时候我们还必须写这样的类作为工具类。这样的类怎么实现呢?有人可能会把该类定义成抽象类(Abstract class),的确,抽象类是不可以实例化的,但是别忘了还有继承,继承了抽象类的子类在实例化时候,默认是会先调用父类无参数的构造函数的 (super();),这时候,父类不是也被实例化了嘛?其实我们可以这样做,把该类的构造函数定义为私有的(private),而类的内部又不调用该构 造函数的话,就成功了。这样带来的后果就是该类成了 final的,不可能再被任何类继承了,要被继承,得提供一个公有(public)的或者保护(protect)的构造函数,这样才能被子类调用。

 

//Noninstantiable utility class
public class UtilityClass {
	// Suppress default constructor for noninstantiability
	private UtilityClass() {
	// This constructor will never be invoked
	}
	... // Remainder omitted
}

 

 

分享到:
评论

相关推荐

    liao-hao#effective-Java-1#04.使用私有构造方法执行非实例化1

    只有当类不包含显式构造方法时,才会生成一个默认构造方法,因此可以通过包含一个私有构造方法来实现类的非实例化:// 不可实例化的程序类// 禁止默认构造函数以实现

    ihukaijun#effective-java-3rd-chinese#04. 使用私有构造方法执行非实例化1

    只有当类不包含显式构造器时,才会生成一个默认构造器,因此可以通过包含一个私有构造器来实现类的非实例化:public class UtilityClass {..

    Effective Java第三版1

    4. **强化不可实例化的能力**:对于工具类或只包含静态方法的类,通过使构造器私有,可以防止其被实例化。 5. **依赖注入**:优于硬编码资源连接,依赖注入可以提高代码的可测试性和灵活性。 6. **避免创建不必要的...

    Effective Java读书笔记.pdf

    Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展可追溯到1991年,当时由...

    effective java 读书笔记

    - Item4:如果一个类不应当被实例化,使用私有构造子并配合`final`关键字使其成为不可初始化的常量类。 2. **避免产生不必要的对象** - Item5:尽量重用对象,特别是对于不可变对象,如字符串,它们在常量池中会...

    effective-java.pdf

    但是,可以通过提供一个不可实例化的伴随类来存放静态工厂方法。Java 8之后,接口可以包含静态方法,不过实现细节仍然可能需要放在包私有类中。 3. 静态工厂方法的命名和设计 良好的命名对于静态工厂方法非常重要。...

    Effective-Java读书笔记

    3. **优先考虑静态工厂方法而非构造器**:静态工厂方法比公有构造器更灵活,它们不需要在每次实例化时都创建一个新的类实例,还可以返回已缓存的实例或限制对象的创建。 4. **使用不可变对象**:不可变对象一旦创建...

    effectiveJava的笔记

    2. **构造器与工厂方法**:提倡使用私有构造器和静态工厂方法,以便于控制类的实例化过程,提高代码灵活性,例如实现不可变对象、延迟初始化等。 3. **接口与抽象类**:讨论了接口和抽象类在设计上的差异,强调接口...

    Effective-Java读书笔记(上)

    **通过私有构造器强化不可实例化的类**: - **工具类**:通常,工具类应包含私有构造器以防止被实例化。 - **副作用**:使用私有构造器的一个副作用是使得该类不能被继承。 **避免创建不必要的对象**: 1. **不可...

    《Effective Java》读书分享.pptx

    通过私有构造器强化不可实例化的能力,可以防止工具类被实例化。 Builder 模式 Builder 模式是一种构建对象的方法,不直接生成想要的对象,而是利用必要参数调用构造器(或者静态工厂)得到一个 builder 对象,...

    effecctivejava 第三版中文

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,现在已经更新到第三版。这本书深入探讨了如何编写高效、可维护且设计良好的Java代码,是每一个Java开发者提升技能的重要参考资料。以下是对该...

    Effective-Java-2nd-Edition-(May-2008).zip_effective java

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,第二版发布于2008年。这本书旨在提供实用的编程指导,帮助开发者写出更高效、更可维护的Java代码。以下是对书中核心知识点的详细解读: 1. *...

    java逻辑思维笔试题-effective-java-3rd-edition:有效的Java第3版注释

    第三版笔记 章节索引 02 - 创建和销毁对象 03 - 所有对象通用的方法 04 - 类和接口 05 - 泛型 06 - 枚举和注释 07 - Lambda 和流 08 - 方法 09 - 通用编程 10 - 例外 11 - 并发 12 - 序列化 第 2 章 - 创建和销毁...

    effective-java 配套代码

    3. **构造函数与工厂方法(Constructors and Factory Methods)**: 书中提倡使用工厂方法代替公共构造函数,以实现更好的封装和灵活性。这里可能包含不同类型的工厂模式实现。 4. **可变与不可变对象(Mutable vs ...

    Effective-Robotics-Programming-with-ROS——中文学习笔记

    ### Effective Robotics Programming with ROS —— 中文学习笔记 #### 知识点一:ROS环境配置与准备工作 **1.1 安装ROS Indigo** 在开始深入学习《Effective Robotics Programming with ROS》之前,首先需要搭建...

    effective python学习笔记.pdf

    记录了我的effective-Python学习笔记,精简了effective-Python中重要的部分。effective-Python是一本值得多看几遍的书,但是看后面的几遍的时候完全可以直接看自己的学习笔记。此学习笔记侧重与比较实用的部分即前四...

    effectiveJava课件分享

    根据提供的标题和描述,我们将探讨三个关键知识点:最小化类和成员的可访问性、使用访问方法而非公有域以及使可变性最小化,通过创建不可变类。 首先,让我们深入理解"使类和成员的可访问性最小化"这一原则。在面向...

Global site tag (gtag.js) - Google Analytics