Java 静态工厂方法

之前看到一个面试题,静态工厂方法有什么优缺点,这个表示说不上来。。。  惭愧

所以单独开一篇介绍下静态工厂方法的特点,先看代码实现。这里举例了一个静态工厂方法的实现

public class Fruit {

    private String info;
    private static final Fruit APPLE=new Fruit("apple");
    private static final Fruit ORIGIN=new Fruit("origin");
    private static final Fruit PEAR=new PEAR();
    public Fruit(){


    }
    private Fruit(String info){

        this.info=info;
    }
    public static Fruit getApple(){

        return APPLE;
    }
    public static Fruit getOrigin(){

        return ORIGIN;
    }

    public static Fruit getPear(){

        return PEAR;
    }


}
class PEAR extends Fruit{

    @Override
    public String toString() {
        return "Fruit-PEAR";
    }
}

先看一下有什么缺点:

1.static的静态工厂方法和普通的静态方法没什么明显区别;

2.在继承Fruit的时候,必须将Fruit的构造方法设置为public或protected,否则无法子类化; 可以将Fruit的public修改为private试下,编译器会报错;

再看下优点:

1.在调用的时候,可以直接根据函数名来调用,这样可以根据函数名来标识,提高可读性

2.在调用的时候,不需要每次new一个对象;定义final static的对象,每次直接返回static的实例;

3.可以看下这条定义private static final Fruit PEAR=new PEAR();   返回的类型其实为Fruit的子类,及PEAR类的实例;即可以返回原返回类型的子类型;

4.代码看起来会比较简洁一些;

 

posted on 2017-09-19 15:42  qiezijiajia 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/dpains/p/7552171.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值