Effective Java——01 靜態方法替代構造器
阿新 • • 發佈:2018-11-07
1.靜態方法替代構造器
先以一段程式碼開頭,有個大概的瞭解:
//動物類 public class Animal { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
一般來說,我們建立動物物件會是這樣,
public static void main(String[] args) {
Animal animal = new Animal();
}
用靜態方法改變之後,animal類就會成這樣
public class Animal { private String name; private String age; //私有構造方法 private Animal(){ } //提供創造例項的靜態方法 public static Animal getInstance(){ return new Animal(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
呼叫變為這樣,
public static void main(String[] args) {
Animal animal = Animal.getInstance();
}
2.書中闡述了靜態工廠方法與構造器的幾個優點和缺點。
優點:
1.靜態方法有名稱。
2.不必在每次呼叫它們的時候都建立一個新物件(可以整成單例模式)。
3.它們可以返回型別的任何子型別物件(利用多型)。
4.在建立引數化例項的時候,它們使程式碼更加簡潔。
缺點:
1.類如果不含共有的或者受保護的構造器,就不能被子類化。
2.與其他靜態方法實際上沒任何區別(想要了解具體如何例項化一個類,是非常困難的)。