Effective Java-考慮用靜態工廠方法代替構造器
阿新 • • 發佈:2019-02-04
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