靜態工廠方法代替構造器

2021-09-30 16:21:46 字數 869 閱讀 8711

靜態工廠方法的優勢:

1它們有名稱,表意更清楚。

2不必在每次呼叫它們的時候都建立乙個新物件

3它們可以返回原返回型別的任何子型別的物件。

4在建立引數化型別例項的時候,它們是**變得更加簡單。

缺點:1類如果不含有公有的或者受保護的構造器,就不能被子類化

2它們與其他的靜態方法實際上沒有任何區別,不方便辨認。

服務提供者框架簡介:

服務提供者框架有三個重要的元件:服務介面,這是提供者實現的,供客戶使用的,

提供者註冊api,這是系統用來註冊實現,讓客戶端訪問他們的;服務訪問api,是客戶端用來獲取服務的例項的。

例子:

public inte***ce service

public inte***ce provider

public class services 

private 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 如果不通過共有的構造器,或者說除了公有的構造器之外,類還可以給他它的客戶端提供靜態工廠方法。提供靜態工廠方法而不是公有的構造器,這...