EffectiveJava之创建和销毁对象篇

1. 考虑用 静态工厂方法 而不是构造器

有这五个优点:

  1. 有方法名
  2. 不用每次都创建对象
  3. 可以返回任意子类
  4. 可以根据不同的入参而返回不同的类
  5. 在编写包含方法的类时,返回对象的类不需要存在

A. 有方法名

这个优点确实很显眼 ,毕竟构造器名固定了🐖

B. 不用每次都创建对象

这个也好理解,可以缓存对象, 设计思想上可参考 亨元设计模式

例如 valueOf 方法 👇

C. 可以返回任意子类

这个作者举了 Collections 这个工具类,但是我也没啥特别的感觉,感觉和 面向接口编程 差不多的意思

D 可以根据不同的入参而返回不同的类

这个可以参考 Spring 中 BeanFactory 接口的 getBean 方法。

这个我便轻车熟路了,它可以很对业务模块进行解耦,方便扩展

接口A a = applicationContext.getBean(参数);
a.common();
复制代码

E. 在编写包含方法的类时,返回对象的类不需要存在

这个还是 面向接口编程 好吧……

作者举了 JDBC 这个例子。

Connection conn=DriverManager.getConnection(xxx)

2. 如果构造器有很多参数,建议用 builder 去创建对象

这个就是 建设者模式 的使用了,下面是作者 Joshua Bloch 在 GitHub 仓库给的例子

package effectivejava.chapter2.item2.builder;

// Builder Pattern  (Page 13)
public class NutritionFacts {
    private final int servingSize;
    private final int servings;
    private final int calories;
    private final int fat;
    private final int sodium;
    private final int carbohydrate;

    public static class Builder {
        // Required parameters
        private final int servingSize
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值