创建和销毁对象:考虑使用静态方法代替构造方法

Item1:考虑使用静态方法代替构造方法

    通常客户端都是通过类的构造方法来获得一个类的实例,另外一种方式则是给该类添加一个静态的工厂方法(并非工厂模式),例如下面的方式:

public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}

这样的做法有优点也有弊端

    优点之一是静态方法可以有自己的方法名,从而让代码的可读性更好,也避免了重载的构造方法不便区分的缺点

    优点之二是利用静态的构造方法,可以避免每次调用都新建一个类的实例,这样可以实现immutable类的对象的复用。就像上面所示的Boolean.valueOf(boolean)方法,这点和享元模式(Flyweight )有类似之处。

    优点之三是静态方法可以返回一个类的子类的对象,这样可以充分利用Java的多态特性,对于基于抽象编程思想而言是非常有利的。

    优点之四是可以避免构造方法冗长的参数列表(美观?)。

静态方法代替构造方法有两个缺陷

    其一是没有public和protected构造方法的类,不能够有使用这样的方式。

    其二是静态工厂方法不容易和其它的静态方法做区分。

下面是静态工厂方法命名的一些建议:

    valueOf

    of

    getInstance

    newInstance

    getType

    newType

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值