美文网首页
(1)用静态工厂方法代替构造器

(1)用静态工厂方法代替构造器

作者: Jim的猿猿之路 | 来源:发表于2018-07-09 21:24 被阅读0次

如何获得一个类的实例

为了获得一个类的实例对象,我们在开发过程中一般通过两种方式:

  1. 通过类的构造方法,new出一个对象。
class Person {
    private name;
    public Person(String name) {
        this.name = name;
    }
}

//调用构造方法获得实例
Person man = new Person("Jimmy");
  1. 类提供一个公有静态方法,通过这个方法返回该类的一个对象。
class Person {
    private name;
    public Person(String name) {
        this.name = name;
    }

    public static createPersonWithName(String name) {
        Person instance = new Person(name);
        return instance;
    }
}

//调用静态工厂方法获得实例
Person man = Person.createPersonWithName("Jimmy");

两者的区别在哪里?

  1. 静态工厂方法可以自定义方法名。对比构造器的名称只能是类的名字,静态工厂方法的区分度更好。如上面例子中的 Person, 我们可以定义一个名称为 createPersonWithName(String name) 的方法来引导用户使用'name'来创建一个实例。

  2. 不必每次调用都创建对象。我们可以根据需要,返回一个自己需要的对象,这个对象可以多次复用或者是一个单例,反之,直接调用构造器会强制创建一个对象。

  3. 可以返回子类对象。对于某些不想公开构造方法或者类的细节的对象,可以利用这个特性达到目的。如 Collection Framework 里面的静态工厂,能不暴露具体的子类的条件下,返回子类的对象,客户端对此是透明的。

静态工厂通常比构造器更加适合创建对象,我们应该优先考虑静态工厂。

相关文章

  • effective java学习笔记 原则1:考虑用静态工厂方法

    原则1:考虑用静态工厂方法代替公有构造器 提供实例的方式:静态工厂方法(非设计模式中的静态工厂模式)公有构造器ne...

  • 创建和销毁对象

    1,考虑用静态工厂方法代替构造器 切忌第一反应就是提供共有构造器,而不先考虑静态工厂。 类可以通过静态工厂方法返回...

  • effective java读书笔记

    一、考虑用静态工厂方法代替构造器1.静态工厂方法有名称,而构造器只能是类名 private Map > map =...

  • java编程建议系列一

    1.考虑用静态工厂方法代替构造器 静态工厂方法惯用名称 valueOf —— 类型转换方法 of —— value...

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

    1 考虑用静态工厂方法代替构造器 例如如下方法: 静态工厂方法和构造器都各有长处,我们需要理解各自长处,做出合适的...

  • 第二章 创建和销毁对象

    1.考虑用静态工厂方法代替构造器 静态工厂方法与构造器不同的优势在于: 1.他们有名称(容易阅读) 2.不用每次调...

  • Java创建和销毁对象

    考虑用静态工厂方法代替构造器 静态工厂方法可以通过静态获取类的一个实例,而不需要通过构造器; 使用静态工厂方法的优...

  • 2018-05-09

    1、用静态工厂方法代替构造器 2、遇到多个构造器参数时考虑用构建器 3、用私有构造器或者枚举类型强化Singlet...

  • 第一条 考虑用静态工厂方法代替构造器

    创建和销毁对象 考虑用静态工厂方法代替构造器 一般使用构造器 使用静态方法 这样写的优势 静态方法有名字构造器与类...

  • Effective Java:创建和销毁对象

    第1条:考虑用静态工厂方法代替构造器 (Consider static factory methods inste...

网友评论

      本文标题:(1)用静态工厂方法代替构造器

      本文链接:https://www.haomeiwen.com/subject/flymuftx.html