靜態工廠方法的優勢:
1它們有名稱,表意更清楚。
2不必在每次呼叫它們的時候都建立乙個新物件
3它們可以返回原返回型別的任何子型別的物件。
4在建立引數化型別例項的時候,它們是**變得更加簡單。
缺點:1類如果不含有公有的或者受保護的構造器,就不能被子類化
2它們與其他的靜態方法實際上沒有任何區別,不方便辨認。
服務提供者框架簡介:
服務提供者框架有三個重要的元件:服務介面,這是提供者實現的,供客戶使用的,
提供者註冊api,這是系統用來註冊實現,讓客戶端訪問他們的;服務訪問api,是客戶端用來獲取服務的例項的。
例子:
public inte***ce service
public inte***ce provider
public class servicesprivate static final map, provider> providers
= new concurrenthashmap<>();
public static final string default_provider_name
="";
public static void
registerdefaultprovider(provider p)
public static void
registerprovider(string name,provider p)
public static service newinstance()
public static service newinstance(string name)
}
使用靜態工廠方法代替構造器
雖然他們類似,但是工廠模式需要建立乙個工廠物件,然後呼叫方法來建立例項,而靜態工廠方法可以寫在類中直接替代構造器,並可以通過類名直接呼叫,無需重新建立物件。構造器需要建立物件 靜態工廠方法有名字 對於構造器來說,根據入參的不同可以有多個構造器,但是這些構造器的名稱都是一樣的,使用者在呼叫時就會一頭霧...
1 考慮用靜態工廠方法代替構造器
1.考慮用靜態工廠方法代替構造器 例子 public static boolean valueof boolean b 使用靜態工廠替代構造器的優勢 1 他們有名稱 2 不必每次呼叫都產生新的物件 3 可以返回原返回型別任何子型別的物件 4 建立引數化型別例項的時候,使 更簡潔 缺點 1 類如果不含...
No1 用靜態工廠方法代替構造器
先來看乙個例子 下面這個方法將boolean基本型別值轉換成了乙個boolean物件引用 public static boolean valueof boolean b 如果不通過共有的構造器,或者說除了公有的構造器之外,類還可以給他它的客戶端提供靜態工廠方法。提供靜態工廠方法而不是公有的構造器,這...