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

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

單身人士真的那么糟糕嗎?

單身人士真的那么糟糕嗎?

單身人士真的那么糟糕嗎?可以理解的是,許多設(shè)計(jì)模式在某些情況下可能被濫用,就像媽媽總是說(shuō):“ 太多好事并不總是好的!”我注意到這些天,我經(jīng)常使用Singletons,而且我擔(dān)心自己可能會(huì)濫用設(shè)計(jì)模式,并且越來(lái)越深入地研究一種不良習(xí)慣的習(xí)慣。我們正在開(kāi)發(fā)一個(gè)Flex應(yīng)用程序,當(dāng)用戶使用它時(shí),該應(yīng)用程序在內(nèi)存中保留了相當(dāng)大的分層數(shù)據(jù)結(jié)構(gòu)。用戶可以按需加載,保存,更改和刷新數(shù)據(jù)。這些數(shù)據(jù)通過(guò)Singleton類集中,該類聚合了幾個(gè)ArrayCollections,Arrays,value對(duì)象以及通過(guò)getter和setter公開(kāi)的一些其他本機(jī)成員變量。要從應(yīng)用程序的任何位置獲取對(duì)數(shù)據(jù)的引用,我們執(zhí)行整個(gè)Model.getInstance()方法類型的事情,我確信每個(gè)人都熟悉。這確保了我們始終掌握相同的數(shù)據(jù)副本,因?yàn)樵谖覀冊(cè)O(shè)計(jì)時(shí),我們說(shuō)在應(yīng)用程序生命周期中只允許存在一次實(shí)例。從這個(gè)中央數(shù)據(jù)存儲(chǔ)庫(kù)中,我們可以輕松地調(diào)度屬性更改事件,并且可以有多個(gè)引用中央數(shù)據(jù)的UI組件,更新其顯示以反映已發(fā)生的數(shù)據(jù)更改。到目前為止,這種方法已經(jīng)有效并且證明對(duì)我們的環(huán)境非常實(shí)用。然而,我發(fā)現(xiàn),在創(chuàng)建新課程時(shí),我有點(diǎn)過(guò)分了。問(wèn)題應(yīng)該是一個(gè)類是Singleton,還是應(yīng)該以其他方式管理,例如可能使用工廠,往往有點(diǎn)變得有點(diǎn)困難,有點(diǎn)不確定。我在哪里畫(huà)單線?是否有一個(gè)很好的指導(dǎo)方針來(lái)決定何時(shí)使用單身人士以及何時(shí)遠(yuǎn)離他們。此外,任何人都可以推薦一本關(guān)于設(shè)計(jì)模式的好書(shū)嗎?
查看完整描述

3 回答

?
三國(guó)紛爭(zhēng)

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

是的,單身人士很糟糕。它們很糟糕,因?yàn)樗鼈優(yōu)槟闼龅闹皇墙Y(jié)合了兩個(gè)屬性,每個(gè)屬性在95%的時(shí)間都是壞的。(這意味著平均而言,單身人士在99.75%的時(shí)間里表現(xiàn)不佳;))

由GoF定義的單例是一種數(shù)據(jù)結(jié)構(gòu):

  1. 授予對(duì)象的全局訪問(wèn)權(quán)限

  2. 強(qiáng)制只能存在一個(gè)對(duì)象實(shí)例。

第一個(gè)通常被認(rèn)為是一件壞事。我們不喜歡全局變量。第二個(gè)是更微妙,但一般來(lái)說(shuō),實(shí)際上沒(méi)有任何情況下這是一個(gè)合理的強(qiáng)制執(zhí)行限制。

有時(shí),只有一個(gè)對(duì)象實(shí)例才有意義。在這種情況下,您選擇只創(chuàng)建一個(gè)。您不需要單例來(lái)強(qiáng)制執(zhí)行它。

通常情況下,即使只有一個(gè)實(shí)例“有意義”,事實(shí)證明它根本沒(méi)有意義。遲早,你需要不止一個(gè)記錄器。或者多個(gè)數(shù)據(jù)庫(kù)?;蛘吣鷮⒉坏貌粸槊總€(gè)單元測(cè)試重新創(chuàng)建資源,這意味著我們必須能夠隨意創(chuàng)建它們。在我們理解后果之前,它過(guò)早地從我們的代碼中消除了靈活性。

單例隱藏依賴關(guān)系并增加耦合(每個(gè)類都可能依賴于單例,這意味著除非我們還重用所有單例,否則該類不能在其他項(xiàng)目中重用),并且因?yàn)檫@些依賴關(guān)系不是立即可見(jiàn)的(作為函數(shù)/構(gòu)造函數(shù)參數(shù)) ),我們沒(méi)有注意到它們,通常在我們創(chuàng)建它們時(shí)不會(huì)考慮它們。只需拉入一個(gè)單例就可以了,它幾乎就像一個(gè)局部變量一樣,所以我們傾向于在它們存在時(shí)使用它們很多。這使他們幾乎不可能再次刪除。你最終,也許不是意大利面條代碼,而是意大利面依賴圖。遲早,你失控的依賴關(guān)系將意味著單身人士開(kāi)始依賴彼此,然后在嘗試初始化時(shí)獲得循環(huán)依賴關(guān)系。

他們使單元測(cè)試非常困難。(如何測(cè)試在單個(gè)對(duì)象上調(diào)用函數(shù)的函數(shù)?我們不希望運(yùn)行實(shí)際的單例代碼,但是我們?nèi)绾畏乐惯@種情況?

是的,單身人士很糟糕。

有時(shí),你真的想要全球化。然后使用全局而不是單身。

有時(shí),非常非常非常罕見(jiàn),你可能有一種情況,創(chuàng)建一個(gè)類的多實(shí)例是一個(gè)錯(cuò)誤,它可以沒(méi)有導(dǎo)致錯(cuò)誤進(jìn)行。(關(guān)于我能想到的唯一一個(gè)案例,即使這是設(shè)計(jì)的,如果你代表一些硬件設(shè)備。你只有一個(gè)GPU,所以如果你要將它映射到代碼中的一個(gè)對(duì)象,它會(huì)理解只有一個(gè)實(shí)例可以存在)。但是,如果您發(fā)現(xiàn)自己處于這種情況(并且再次強(qiáng)調(diào),多個(gè)實(shí)例導(dǎo)致嚴(yán)重錯(cuò)誤的情況,而不僅僅是“我無(wú)法想到多個(gè)實(shí)例的任何用例”),那么執(zhí)行該約束,但不要使對(duì)象全局可見(jiàn)。

每個(gè)這兩個(gè)屬性可以是有用的,在極少數(shù)情況下。但我想不出一個(gè)案例,他們的組合將是一件好事。

不幸的是,很多人都認(rèn)為“Singletons是符合OOP標(biāo)準(zhǔn)的全局變種”。不,他們不是。除了介紹其他一些完全不相關(guān)的問(wèn)題之外,他們?nèi)匀挥龅脚c全局問(wèn)題相同的問(wèn)題。絕對(duì)沒(méi)有理由比普通的全球更喜歡單身人士。


查看完整回答
反對(duì) 回復(fù) 2019-08-06
?
aluckdog

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

軟件開(kāi)發(fā)人員似乎分成兩個(gè)陣營(yíng),這取決于他們是贊成理想主義的編碼風(fēng)格還是實(shí)用的編碼風(fēng)格:

  • 理想主義:永遠(yuǎn)不要使用單身模式。

  • 務(wù)實(shí):避免單身模式。

就個(gè)人而言,我贊成務(wù)實(shí)的做法。有時(shí)違反規(guī)則是有道理的,但前提是你真正了解自己在做什么,并愿意接受相關(guān)的風(fēng)險(xiǎn)。如果您對(duì)以下關(guān)于特定用例的問(wèn)題回答“是”,則單例模式可以產(chǎn)生一些實(shí)際好處。

  • 單身是你的應(yīng)用程序的外部嗎?數(shù)據(jù)庫(kù),排隊(duì)服務(wù)和ESB都是單例模式的完全有效的宏示例。

  • KISS:你的整個(gè)應(yīng)用僅限于2-3個(gè)內(nèi)部單身人士嗎?

  • DRY:那些單身人士本身是否具有全球性,因此不得不在你的應(yīng)用程序中幾乎每個(gè)對(duì)象中引用參考文獻(xiàn)?(例如,記錄器或組件介體)?

  • 您的單身人士是否僅依賴于彼此和/或操作環(huán)境?

  • 您是否確保了每個(gè)單例的正確啟動(dòng)和關(guān)閉順序,包括內(nèi)存管理注意事項(xiàng)?例如,“Grand Central”樣式的線程池可能需要在main()中具有實(shí)例Run()和Shutdown()方法,以便保證任務(wù)僅在它們操作的對(duì)象處于有效狀態(tài)時(shí)運(yùn)行。


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

添加回答

舉報(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)