1 考慮用靜態工廠方法代替構造器

2021-09-01 10:03:30 字數 699 閱讀 6596

1.考慮用靜態工廠方法代替構造器

例子:

public static boolean valueof(boolean b)
使用靜態工廠替代構造器的優勢:

1)他們有名稱

2)不必每次呼叫都產生新的物件

3)可以返回原返回型別任何子型別的物件

4)建立引數化型別例項的時候,使**更簡潔

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

2)與其他的靜態方法沒有任何區別:api中沒有特殊標明,因此很難查詢如何例項化乙個類。

靜態工廠方法的慣用名稱

*valueof--該方法返回的例項與它的引數具有相同的價值。這樣的靜態工廠方法實際上是型別轉換方法。

*of--valueof的一種更為簡潔的替代

*getinstance--返回的例項是通過方法的引數來描述的,但是不能說具有與引數同樣的值。對於singeton來說,該方法     沒有引數,並返回唯一例項

*newinstance--像getinstance一樣,但newinstance能確保返回的每個例項都與其他例項不同

*gettype--像getinstance一樣,但是在工廠方法處於在不同的類中時使用。type表示工廠方法所返回的物件型別

*newtype--像newinstance一樣,但是在工廠方法處於在不同的類中時使用。type表示工廠方法所返回的物件型別

第1條 考慮用靜態工廠方法代替構造器

第1條 考慮用靜態工廠方法代替構造器 優點 1.靜態工廠方法有名稱 2.不必每次呼叫的時候都建立乙個新的物件 3.可以返回型別的任何子型別的物件 4.在建立引數化型別例項的時候,使 更加簡潔 缺點 1.類如果不含有共有的或者受保護的構造器,就不能被子類化 2.與其他的靜態方法實際上沒有任何區別 pu...

No1 用靜態工廠方法代替構造器

先來看乙個例子 下面這個方法將boolean基本型別值轉換成了乙個boolean物件引用 public static boolean valueof boolean b 如果不通過共有的構造器,或者說除了公有的構造器之外,類還可以給他它的客戶端提供靜態工廠方法。提供靜態工廠方法而不是公有的構造器,這...

條目1 考慮使用靜態工廠方法代替構造方法

body body first child body last child p,blockquote,ul,ol,dl,table,pre h1,h2,h3,h4,h5,h6 h1 tt,h1 code,h2 tt,h2 code,h3 tt,h3 code,h4 tt,h4 code,h5 tt,...