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.代码看起来会比较简洁一些;

  • 相关阅读:
    cf B. Sereja and Suffixes
    cf E. Dima and Magic Guitar
    cf D. Dima and Trap Graph
    cf C. Dima and Salad
    最短路径问题(floyd)
    Drainage Ditches(网络流(EK算法))
    图结构练习—BFSDFS—判断可达性(BFS)
    Sorting It All Out(拓扑排序)
    Power Network(最大流(EK算法))
    Labeling Balls(拓扑)
  • 原文地址:https://www.cnblogs.com/dpains/p/7552171.html
Copyright © 2011-2022 走看看