zoukankan      html  css  js  c++  java
  • 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.代码看起来会比较简洁一些;

  • 相关阅读:
    WebGL着色器32位浮点数精度损失问题
    Web地图呈现原理
    虚拟DOM详解
    webgl开发第一道坎——矩阵与坐标变换
    作为前端应当了解的Web缓存知识
    浅谈模板引擎
    WebGL中深度碰撞方法总结
    不加班的项目从排期开始
    从0到1带人做项目
    webgl自学笔记——深度监测与混合
  • 原文地址:https://www.cnblogs.com/dpains/p/7552171.html
Copyright © 2011-2022 走看看