日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用静态工厂方法代替构造器

發布時間:2025/1/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用静态工厂方法代替构造器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、靜態工廠方法與構造器不同的第一大優勢在于,它們有名稱。如果構造器的參數本身沒有確切地描述正被返回的對象,那么具有適當名稱的靜態工廠會更容易使用,產生的客戶端代碼也更易于閱讀。例如,構造器Biginteger (int , int, Random )返回的Biginteger 可能為素數,如果用名為B 工ginteger.probablePrime 的靜態工廠方法來表示,顯然更為清楚。

2、一個類只能有一個帶有指定簽名的構造器。編程人員通常知道如何避開這一限制: 通過提供兩個構造器,它們的參數列表只在參數類型的順序上有所不同。實際上這并不是個好主意。面對這樣的AP I , 用戶永遠也記不住該用哪個構造器, 結果常常會調用錯誤的構造器。并且在讀到使用了這些構造器的代碼時,如果沒有參考類的文檔,往往不知所云。由于靜態工廠方法有名稱,所以它們不受上述限制。當一個類需要多個帶有相同簽名的構造器時,就用靜態工廠方法代替構造器,并且仔細地選擇名稱以便突出靜態工廠方法之間的區別。

3、靜態工廠方法與構造器不同的第二大優勢在于,不必在每次調用它們的時候都創建一個新對象

4、靜態工廠方法與構造器不同的第三大優勢在子,它們可以返回原返回類型的任何子類型的對象

5、靜態工廠的第四大優勢在于,所返回的對象的類可以隨著每次調用而發生變化,這取決于靜態工廠方法的參數值

6、靜態工廠的第五大優勢在于,方法返回的對象所屬的類,在編寫包含該靜態工廠方法的類時可以不存在

缺點

1、靜態工廠方法的主要缺點在子,類如果不含公有的或者受protected的構造器,就不能被子類化

2、靜態工廠方法的第二個缺點在于,程序員很難發現它們

from一一類型轉換方法,它只有單個參數,返回該類型的一個相對應的實例,

例如:Dated= Date . from(instant) ;

?of — —聚合方法,帶有多個參數,返回該類型的一個實例,把它們合并起來,例如:

Set<Rank> faceCards = EnumSet. of (JACK , QUEEN, KING];

?valueOf一一比from 和of 更煩瑣的一種替代方法,例如:

Biginteger prime = Biginteger.valueOf(Integer.MAX_VALUE);

instance 或者get Instance一-返回的實例是通過方法的(如有)參數來描述

的,但是不能說與參數具有同樣的值,例如:

StackWalker luke = StackWalker.getinstance(options);

create 或者newInstance一一才象instance 或者getinstence 一樣,但create

或者newInstance 能夠確保每次調用都返回一個新的實例,例如:

Object newArray = Array.newInstance(classObject, arrayLen );

?getType一像getInstance 一樣,但是在工廠方法處于不同的類中的時-候使用。Type 表示工廠方法所返回的對象類型,例如:

FileStore fs = Files.getFileStore(path];

D newType一象newInstance 一樣,但是在工廠方法處于不同的類中的時候使用

BufferedReader br 「= Files.newBufferedReader( path);

總結

以上是生活随笔為你收集整理的用静态工厂方法代替构造器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。