1. 程式人生 > >Effective Java-考慮用靜態工廠方法代替構造器

Effective Java-考慮用靜態工廠方法代替構造器

public static Boolean valueOf(boolean b) {
  return b ? Boolean.TRUE : Boolean.FALSE;
}
//使用構造器
Boolean b1 = new Boolean(true);
//使用靜態工廠方法
Boolean b2 = Boolean.valueOf(true);

優點1:它們有名稱

優點2:不必每次都建立新物件

優點3:構成基於介面的框架

服務提供者框架(Service Provider Framework)——代表(JDBC)

優點4:建立泛型類例項的程式碼更為簡潔

//使用構造器建立
Map<String, List<String>> m1 = new HashMap<String, List<String>>();
//使用靜態工廠方法建立
Map<String, List<String>> m2 = HashMap.newInstance();
 
public static <K, V> HashMap<K, V> newInstance() {
  return new HashMap<K, V>();
}

服務提供商框架:

服務介面:提供者實現的,connection

提供者註冊API:系統用來註冊實現的,DriverManager.registerDriver

服務訪問API:客戶端用來訪問獲取服務的例項,DriverManager.getConnection

服務提供者介面:提供者負責建立其服務實現的例項,Driver