美文网首页
1 抽象工厂方法优于构造器

1 抽象工厂方法优于构造器

作者: 老段来了快跑 | 来源:发表于2019-01-11 18:29 被阅读0次

1抽象工厂的优点(相对于构造器)

1.1 名字


抽象工厂方法(以下简称“AFM(abstract factory method)”),AFM的方法名可以任意设置,而构造器只能用类名。在如下场景,AFM显出优势:

BigInteger i = BigInteger.probablePrime(3, r);//生成素数(只能被自己和1整除)

上述代码可以清晰表达,获取素数。如果采用构造器new BigInteger(),就不能表达素数的含义。

1.2 不需要一定要创建个新的对象


Boolean b = Boolean.valueOf(true);

public static Boolean valueOf(boolean b) {

        return (b ? TRUE : FALSE);

 }

ValueOf()返回的是一个创建好的 final static Boolean 对象,并没有新创建对象,提升了效率

1.3 返回的对象可以是子类


Set<Object> set = Collections.newSetFromMap(new HashMap<Object, Boolean>());

Collections.newSetFromMap()上述接口返回类型是set,但是实际返回对象的类,是SetFromMap类。SetFromMap类是 Collections类的内部私有类,这样就影藏了SetFromMap,让包更简洁。

1.4 按照参数返回不通对象


EnumSet<Color> s = EnumSet.of(Color.RED, Color.GREEN)

根据参数的数量,返回不通对象。小于等于64个时,返回RegularEnumSet。大于64时,返回JumboEnumSet,从达到最优的效率。

1.5 返回的对象类,可以延迟实现


Class.forName("oracle.jdbc.driver.OracleDriver");

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc",USER,PASSWORD);

Connection 是oracle.jdbc.driver.OracleDriver里实现的,是在调用过程中传入的,

2. 抽象工厂方法的缺点

2.1 构造器私有,不能被继承



2.2 文档中,抽象方法混在一般方法中,比较难找到


内容来自《effective java 3rd version》

相关文章

  • 1 抽象工厂方法优于构造器

    1抽象工厂的优点(相对于构造器) 1.1 名字 抽象工厂方法(以下简称“AFM(abstract factory ...

  • Cell工厂的简单实现

    工厂模式根据抽象程度的不同,分为三种: (1)工厂方法:用来快速加工对象,如便利构造器。 (2)抽象出一个公共的父...

  • Effective Java 1

    一、创建和销毁对象 1、考虑用静态工厂方法代替构造器 多一层抽象,使生成对象更加简单、灵活 2、遇到多个构造器参数...

  • effective java读书笔记

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

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

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

  • 创建和销毁对象

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

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

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

  • 《Effective Java》第二章:创建和销毁对象

    第1条:考虑用静态方法而不是构造器 静态方法相对于构造器的优势: 1.静态工厂方法有名字2.静态工厂方法不必每次调...

  • 设计模式分类

    构造型模式 Factory Method (工厂方法) Abstract Factory(抽象工厂) Builde...

  • 第二章 创建和销毁对象

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

网友评论

      本文标题:1 抽象工厂方法优于构造器

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