第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

構(gòu)造函數(shù)與工廠方法

構(gòu)造函數(shù)與工廠方法

構(gòu)造函數(shù)與工廠方法建模類(lèi)時(shí),首選的首選方法是什么:構(gòu)造者,或工廠方法使用其中任何一個(gè)會(huì)有什么考慮因素?在某些情況下,我更喜歡有一個(gè)工廠方法,如果無(wú)法構(gòu)造對(duì)象,則返回null。這使代碼整潔。在執(zhí)行替代操作之前,我可以簡(jiǎn)單地檢查返回的值是否為null,與從構(gòu)造函數(shù)中拋出異常相反。(我個(gè)人不喜歡例外)比如說(shuō),我在類(lèi)上有一個(gè)構(gòu)造函數(shù),它需要一個(gè)id值。構(gòu)造函數(shù)使用此值從數(shù)據(jù)庫(kù)填充類(lèi)。如果不存在具有指定標(biāo)識(shí)的記錄,則構(gòu)造函數(shù)將拋出RecordNotFoundException。在這種情況下,我將不得不在try..catch塊中包含所有這些類(lèi)的構(gòu)造。與此相反,我可以在這些類(lèi)上有一個(gè)靜態(tài)工廠方法,如果找不到記錄,它將返回null。在這種情況下,哪種方法更好,構(gòu)造函數(shù)或工廠方法?
查看完整描述

3 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

來(lái)自Gamma,Helm,Johnson和Vlissides的“ 設(shè)計(jì)模式:可重復(fù)使用的面向?qū)ο筌浖脑亍钡?/a>第108頁(yè)。

使用Factory Method模式時(shí)

  • 類(lèi)無(wú)法預(yù)測(cè)它必須創(chuàng)建的對(duì)象類(lèi)

  • 一個(gè)類(lèi)希望它的子類(lèi)指定它創(chuàng)建的對(duì)象

  • 類(lèi)將責(zé)任委托給幾個(gè)輔助子類(lèi)之一,并且您希望本地化哪個(gè)輔助子類(lèi)是委托的知識(shí)


查看完整回答
反對(duì) 回復(fù) 2019-08-26
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊

除了“有效的java”(在另一個(gè)答案中提到),另一本經(jīng)典書(shū)也暗示:

首選靜態(tài)工廠方法(使用描述參數(shù)的名稱)來(lái)重載構(gòu)造函數(shù)。

例如。不要寫(xiě)

Complex complex = new Complex(23.0);

而是寫(xiě)

Complex complex = Complex.fromRealNumber(23.0);

本書(shū)甚至建議將Complex(float)構(gòu)造函數(shù)設(shè)為私有,以強(qiáng)制用戶調(diào)用靜態(tài)工廠方法。


查看完整回答
反對(duì) 回復(fù) 2019-08-26
?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

有時(shí)您必須在創(chuàng)建對(duì)象時(shí)檢查/計(jì)算某些值/條件。如果它可以拋出異常 - constructro是非常糟糕的方式。所以你需要做這樣的事情:

var value = new Instance(1, 2).init()public function init() {
    try {
        doSome()
    }
    catch (e) {
        soAnotherSome()
    }}

所有其他計(jì)算都在init()中。但只有你作為開(kāi)發(fā)人員真正了解這個(gè)init()。當(dāng)然,幾個(gè)月之后你就會(huì)忘記它。但是如果你有一個(gè)工廠 - 只需要在一個(gè)方法中完成所有你需要的東西,直接調(diào)用隱藏這個(gè)init() - 所以沒(méi)有問(wèn)題。使用這種方法不會(huì)導(dǎo)致創(chuàng)建和內(nèi)存泄漏。

有人告訴你有關(guān)緩存的信息。很好。但是你還必須記住Flyweight模式,它很適合與Factory方式一起使用。


查看完整回答
反對(duì) 回復(fù) 2019-08-26
  • 3 回答
  • 0 關(guān)注
  • 722 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)