Effective Java (1) 思量用静态工场要领取代结构器
当前位置:以往代写 > JAVA 教程 >Effective Java (1) 思量用静态工场要领取代结构器
2019-06-14

Effective Java (1) 思量用静态工场要领取代结构器

Effective Java (1) 思量用静态工场要领取代结构器

一、媒介

从本日开始打算用一个月的时间,通过写念书条记的方法来记录阅读这本Java规模经典中的经典书籍 – Effective Java进程中本身所思所想,以备今后查阅,同时分享出去也但愿可以辅佐到其他人,空话不多说,此刻开始第一篇:建设和销毁工具。

二、思量用静态工场要领取代结构器

①. 一般我们有什么步伐可以建设工具呢?

要领1: 利用类公有结构器。

要领2:利用类的静态要领返回一个实例。

②. 利用静态要领建设工具有什么利益?

利益1: 静态工场要领的名字是由我们本身定名,而结构要领必需与类同名。

PrimeNumber primeNumber1 = new PrimeNumber(int Random); // 返回一个素数  
PrimeNumber primeNumber2 = PrimeNumber.newInstance(); // 利用静态工场要领暗示更为清楚

利益2: 结构要领每次挪用的时候都需要建设一个工具,而静态工场要领每次挪用的时候就不会建设一个新的工具,这对付一个要频繁建设工具的措施来说,可以极大的提高机能,单例模式就是这样实现的。

利益3: 静态工场要领可以返回原返回范例的任何子范例的工具,这样使我们在选择返回工具的类时就有了更大的机动性。

class Father {  
    private Father() {  
    }  
       
    public static Father newInstance(String type) {  
        if (type.equals("ChildA")) { // 按照范例判定返回谁人子类工具  
            return new ChildA();  
        } else {  
            return new ChildB();  
        }  
    }  
      
    public void getName() {   
        System.out.println("My name is father");  
    }  
      
    private static class ChildA extends Father {  
        public void getName() {   
            System.out.println("My name is child A");  
        }  
    }  
      
    private static class ChildB extends Father {  
        public void getName() {  
            System.out.println("My name is child B");  
        }  
    }  
}  
      
public class Test {  
    public static void main(String[] args) {  
        Father c1 = Father.newInstance("ChildA");  
        c1.getName();  
        Father c2 = Father.newInstance("ChildB");  
        c2.getName();  
    }  
}

查察本栏目

利益4: 静态工场要领在建设参数化范例实例的时候,可以使代码变得越发简捷。

private Map<String, List<String>> map = new HashMap<String, List<String>>();  
public static <K, V> HashMap<K, V> newInstance() {  
    return new HashMap<K, V>();  
}

③. 利用静态工场要领建设工具有什么缺点?

缺点1: 假如一个类只能通过静态工场要领来得到实例,那么该类的结构函数就不能是共有的或受掩护的,那么该类就不会有子类,即该类不能被担任。单例模式中首先要私有化结构器。

缺点2:静态工场要领和其他静态要领从名字上看无法区分,所以我们可以约定静态工场要领名字利用valueOf可能getInstance。

④. 什么时候用静态工场要领,什么时候用结构器呢?

静态工场要领和共有结构器各有用处,我们需要领略他们各自的优点,静态工场凡是越发符合,因此切忌第一回响就是提供公有的结构器,而不先思量静态工场。

作者:csdn博客 zdp072

    关键字:

在线提交作业