一葉笑天
          雄關(guān)漫道真如鐵, 而今邁步從頭越。 從頭越, 蒼山如海, 殘陽(yáng)如血。
          posts - 73,comments - 7,trackbacks - 0
             一般客戶端訪問(wèn)類實(shí)例的方式是使用一個(gè)public的構(gòu)造函數(shù)。但是也可以使用一個(gè)public的static factory method,它只是一個(gè)返回類實(shí)例的簡(jiǎn)單靜態(tài)方法。注意static factory method不同于設(shè)計(jì)模式中的Factory Method。static factory method的例子如Boolean類中下面代碼:
          public static Boolean valueOf(boolean b) {
          return b ? Boolean.TRUE : Boolean.FALSE;
          }
          可以用static factory method代替構(gòu)造函數(shù),也可以同時(shí)使用兩者。用static factory method代替構(gòu)造函數(shù)的好處是:
          1.不同于構(gòu)造函數(shù),靜態(tài)工廠方法可以靈活命名。
          2.不同于構(gòu)造函數(shù),靜態(tài)工廠方法不需要每次在調(diào)用的時(shí)候創(chuàng)建一個(gè)新對(duì)象。
          3.不同于構(gòu)造函數(shù),靜態(tài)工廠方法可以返回返回類型的任何子類型。
          4.使用靜態(tài)工廠方法減少了創(chuàng)建參數(shù)類型實(shí)例的繁瑣。
          使用static factory method的缺點(diǎn)是:
          1.如果僅僅提供靜態(tài)工廠方法,而不提供public或者protected構(gòu)造函數(shù)的話,那么構(gòu)造函數(shù)就不能被子類型化。
          2.靜態(tài)工廠方法很容易同其他靜態(tài)方法混淆在一起。

          結(jié)論:
          In summary, static factory methods and public constructors both have their
          uses, and it pays to understand their relative merits. Often static factories are preferable,
          so avoid the reflex to provide public constructors without first considering
          static factories.

          靜態(tài)工廠方法和public的構(gòu)造函數(shù)都有自己的用法,需要理解各自的相關(guān)優(yōu)缺點(diǎn)。通常靜態(tài)工廠方法是比較合適的選擇。因此在首先不考慮靜態(tài)工廠方法的時(shí)候因避免提供public構(gòu)造函數(shù)所帶來(lái)的影響。
          posted on 2008-06-17 10:07 一葉笑天 閱讀(177) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 佛教| 龙南县| 林芝县| 门源| 漾濞| 利津县| 观塘区| 兰溪市| 正安县| 亚东县| 乌鲁木齐县| 化州市| 岳池县| 新丰县| 利川市| 西充县| 仙桃市| 石城县| 昌都县| 来凤县| 洪泽县| 松溪县| 保定市| 延边| 耒阳市| 鹿泉市| 自治县| 南靖县| 涿州市| 平邑县| 格尔木市| 龙岩市| 施秉县| 桃园市| 忻州市| 莱西市| 彩票| 海安县| 米易县| 自治县| 辛集市|