梦幻传奇手游
地區(qū):阿爾及利亞
  類型:文化
  時(shí)間:2025-06-15 22:48:23
劇情簡(jiǎn)介
大家好,我是每周在里陪你進(jìn)步的網(wǎng)管~本次我們繼續(xù)填坑,一下裝飾器模式。上文章我們說(shuō)過(guò)裝飾器代理模式的特殊應(yīng)用而且很多人說(shuō)中間件用裝飾器模式實(shí)現(xiàn)的有的人說(shuō)是用職責(zé)鏈現(xiàn)的,那么這篇文章們就來(lái)一起看看他們異同。什么是裝飾器飾器模式(Decorator Pattern)也叫作包裝器模式(Wrapper Pattern),指在不改變?cè)袑?duì)象的礎(chǔ)上,動(dòng)態(tài)地給一個(gè)象添加一些額外的職。就增加功能來(lái)說(shuō),飾器模式相比生成子更為靈活,屬于結(jié)構(gòu)設(shè)計(jì)模式。給對(duì)象添新行為最簡(jiǎn)單直觀的法就是擴(kuò)展本體對(duì)象通過(guò)繼承的方式達(dá)到的。但是使用繼承不避免地有如下兩個(gè)弊:繼承是靜態(tài)的,在譯期間就已經(jīng)確定,法在運(yùn)行時(shí)改變對(duì)象行為。子類只能有一父類,當(dāng)需要添加的功能太多時(shí),容易導(dǎo)類的數(shù)量劇增。而使裝飾器模式,我們通將現(xiàn)有對(duì)象放置在實(shí)了相同一套接口的包器對(duì)象中來(lái)動(dòng)態(tài)地向有對(duì)象添加新行為。包裝器中進(jìn)行我們代的擴(kuò)展,有助于重用能并且不會(huì)修改現(xiàn)有象的代碼,符合“開原則”。這里被放置包裝對(duì)象的“現(xiàn)有對(duì)”通常會(huì)被叫做“組”(Component),而包裝組件的包裝器對(duì)狌狌就是我們常的“裝飾器”(Decorator),因?yàn)檠b飾器會(huì)組件實(shí)現(xiàn)相接口,故客戶端無(wú)法別兩者的差異,也就需要在增加裝飾器時(shí)客戶端調(diào)用代碼進(jìn)行改了。從上面關(guān)于裝器模式的描述中 ,會(huì)感覺(jué)他跟代理模式很。這是因?yàn)樗麄儽緛?lái)結(jié)構(gòu)上也幾乎一樣,飾器算是代理的一個(gè)殊應(yīng)用--裝飾器模式的一個(gè)特點(diǎn)是可以嵌多層裝飾器,相當(dāng)于代理再加代理。不過(guò)理強(qiáng)調(diào)的是對(duì)本體對(duì)的訪問(wèn)控制,而裝飾是用來(lái)對(duì)本地進(jìn)行增,兩者在使用目的上一樣。上面裝飾器模的用處特點(diǎn)用文字描了這么多,下面我們 UML 類圖展示一下它的結(jié)構(gòu),讓我們寫代碼前對(duì)模式中的個(gè)角色有個(gè)更清晰的識(shí)。裝飾器的結(jié)構(gòu)用 UML 類圖表示裝飾器模式的結(jié)幾山如下:圖中可以看到裝飾器式中主要有如下幾個(gè)色:客戶端:會(huì)用多裝飾器來(lái)封裝組件,后調(diào)用裝飾好的包裝的方法,啟動(dòng)執(zhí)行。件接口:Component 聲明裝飾器對(duì)象和被裝飾的組件對(duì)要實(shí)現(xiàn)的公用接口。件實(shí)現(xiàn):具體的組件現(xiàn)類它的 Operation 方法中定義了組件的基葛山行為,飾類可以增強(qiáng)這些行?;A(chǔ)裝飾類:擁有個(gè)指向被封裝對(duì)象的員變量。在自己的 Operation 方法中調(diào)用被裝飾對(duì)象 Operation 方法具體裝飾類:重寫父類的 Operation 方法實(shí)現(xiàn)增強(qiáng)邏輯。類弄明里已經(jīng)出了要實(shí)現(xiàn)的主要邏,第四步的基礎(chǔ)裝飾并不需要一定存在,全可以由具體裝飾類持有對(duì)被裝飾對(duì)象的用,并實(shí)現(xiàn)增強(qiáng)邏輯這樣一來(lái)整體的結(jié)構(gòu)更簡(jiǎn)單一些。注意:中的方法名在代碼實(shí)里可自己定義,不需完全跟圖里給出的方名一樣。我們可以跟節(jié)代理模式的 UML 類圖做個(gè)對(duì)比,兩者在結(jié)構(gòu)上非常相似,其是省略了 BaseDecorator 這一層后,在結(jié)構(gòu)上本上是一摸一樣,這我們一直再?gòu)?qiáng)調(diào)的--"裝飾器是代理模式的特殊應(yīng)無(wú)淫" 的一個(gè)論據(jù)。下面我們看一下現(xiàn)裝飾器模式的代碼版,本文中提供了 Go 語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單裝飾器模式的代碼模。裝飾器模式代碼實(shí)清楚了裝飾器模式結(jié)的組成后,再來(lái)寫代就會(huì)清晰很多,接下我們演示一下用裝飾模式實(shí)現(xiàn)增強(qiáng)游戲主的一個(gè)例子。首先我定義一個(gè)游戲主機(jī)的品接口,它就是上面圖中組件和裝飾器的共接口。//?PS5?產(chǎn)品接口type?PS5?interface?{?StartGPUEngine()?GetPrice()?int64}然后我們提供一個(gè)基的產(chǎn)品實(shí)現(xiàn)類作為裝器模式中的組件。//?CD?版?PS5主機(jī)"本文使用的完整可運(yùn)行源申鑒去公眾號(hào)「管叨bi叨」發(fā)送【設(shè)計(jì)模式】即可領(lǐng)取"type?PS5WithCD?struct{}func?(p?PS5WithCD)?StartGPUEngine()?{?fmt.Println("start?engine")}func?(p?PS5WithCD)?GetPrice()?int64?{?return?5000}這里給出的是一個(gè) CD 版的游戲主機(jī),平時(shí)游戲的同學(xué)都會(huì)知道一般還會(huì)有數(shù)字版的機(jī),價(jià)格會(huì)便宜點(diǎn),種情況我們可以提供個(gè)數(shù)字版游戲主機(jī)的現(xiàn)作為組件實(shí)現(xiàn)類。//?PS5?數(shù)字版主機(jī)type?PS5WithDigital?struct{}func?(p?PS5WithDigital)?StartGPUEngine()?{?fmt.Println("start?normal?gpu?engine")}func?(p?PS5WithDigital)?GetPrice()?int64?{?return?3600}那么除了這兩種基礎(chǔ)的產(chǎn)品類,廠商一般還會(huì)開發(fā)種主題限定配色的主、增加了硬件配置的機(jī)等等,這兩種在價(jià)上肯定會(huì)跟基礎(chǔ)版有不一樣,針對(duì)這種層的擴(kuò)展我們可以使用飾器來(lái)實(shí)現(xiàn),避免對(duì)礎(chǔ)組件類的更改。下是用兩個(gè)裝飾器實(shí)現(xiàn) Plus 版和主題配色版的兩個(gè)增蠪蚔。"本文使用的完整可運(yùn)源碼去公眾號(hào)「網(wǎng)管bi叨」發(fā)送【設(shè)計(jì)模式】即讙領(lǐng)取"http://?Plus?版的裝飾器func?(p?*PS5MachinePlus)?SetPS5Machine(ps5?PS5)?{?p.ps5Machine?=?ps5}func?(p?PS5MachinePlus)?StartGPUEngine()?{?p.ps5Machine.StartGPUEngine()?fmt.Println("start?plus?plugin")}func?(p?PS5MachinePlus)?GetPrice()?int64?{?return?p.ps5Machine.GetPrice()?+?500}//?主題色版的裝飾器type?PS5WithTopicColor?struct?{?ps5Machine?PS5}func?(p?*PS5WithTopicColor)?SetPS5Machine(ps5?PS5)?{?p.ps5Machine?=?ps5}func?(p?PS5WithTopicColor)?StartGPUEngine()?{?p.ps5Machine.StartGPUEngine()?fmt.Println("尊貴的主題色主機(jī),GPU啟動(dòng)")}func?(p?PS5WithTopicColor)?GetPrice()?int64?{?return?p.ps5Machine.GetPrice()?+?200}根據(jù)裝飾器模式的特論語(yǔ),兩個(gè)增強(qiáng)可以疊加在一起,組出即高配主題限定版機(jī)...... 呃,是不是有點(diǎn)某游海經(jīng)大每年發(fā)新機(jī)時(shí)給你的覺(jué)了,就是不出第二,每年給你多發(fā)幾個(gè)定配色、升級(jí)下屏幕說(shuō)的就是你 XXX(各位自己評(píng)論里腦補(bǔ)下)好了,在客戶端們把裝飾器和組件組起來(lái)就能獲得一款高主題限定版主機(jī)......"本文使用的完整可運(yùn)行源碼去公眾「網(wǎng)管叨bi叨」發(fā)送【設(shè)計(jì)模式】即陸山領(lǐng)"func?main()?{?ps5MachinePlus?:=?PS5MachinePlus{}?ps5MachinePlus.SetPS5Machine(PS5WithCD{})?//?ps5MachinePlus.SetPS5Machine(PS5WithDigital{})?//?可以在更換主機(jī)?ps5MachinePlus.StartGPUEngine()?price?:=?ps5MachinePlus.GetPrice()?fmt.Printf("PS5?CD?豪華Plus版,價(jià)格?%d?元\n\n",?price?ps5WithTopicColor?:=?PS5WithTopicColor{}?ps5WithTopicColor.SetPS5Machine(ps5MachinePlus)?ps5WithTopicColor.StartGPUEngine()?price?=?ps5WithTopicColor.GetPrice()?fmt.Printf("PS5?CD?豪華Plus?經(jīng)典主題配色版,價(jià)格?%d?元\n",?price}裝飾器和幾個(gè)模式的別裝飾器和代理在結(jié)上類似,在行為上跟責(zé)鏈模式類似,現(xiàn)在們總結(jié)一下他們之間區(qū)別裝飾器模式 VS 代理模式裝飾器模式就是代理模羅羅的一個(gè)殊應(yīng)用。裝飾器模式調(diào)自身功能的擴(kuò)展。理模式強(qiáng)調(diào)對(duì)代理過(guò)的控制。裝飾器 VS 職責(zé)鏈模式裝飾器和職責(zé)鏈在行為上螽槦都多個(gè)單元進(jìn)行組合完邏輯處理,但是裝飾注重給某樣?xùn)|西添加展,最終會(huì)得到一個(gè)品。而職責(zé)鏈更強(qiáng)調(diào)步驟完成某個(gè)流程,像是一個(gè)任務(wù)鏈表,且與裝飾器模式不同是,職責(zé)鏈可以隨時(shí)止。舉個(gè)例子來(lái)說(shuō),對(duì) OA 系統(tǒng)請(qǐng)假審批這個(gè)場(chǎng)景鬻子假設(shè)員請(qǐng)假需要得到組長(zhǎng)、監(jiān)和經(jīng)理的批準(zhǔn)才行在這種情況下,使用飾器模式實(shí)現(xiàn)的話無(wú)您的請(qǐng)假在前面的環(huán)被批準(zhǔn)還是被拒絕,個(gè)鏈條都不會(huì)中斷,終我們會(huì)得到三個(gè)級(jí)審批人對(duì)申請(qǐng)的全部饋。而使用職責(zé)鏈模的話,在每個(gè)階段,個(gè)審批人都有權(quán)批準(zhǔn)拒絕。如果請(qǐng)求在任級(jí)別被拒絕,那么整流程就會(huì)結(jié)束,請(qǐng)求會(huì)繼續(xù)流轉(zhuǎn)到下一個(gè)別的審批人那里。所看到這里,你覺(jué)得像 Web 框架的中間件這種東西應(yīng)該拿職責(zé)還是裝飾器實(shí)現(xiàn)呢?結(jié)裝飾器模式有不少點(diǎn),它是繼承的有力充,比繼承靈活,在改變?cè)袑?duì)象的情況,動(dòng)態(tài)地給一個(gè)對(duì)象展功能,即插即用。過(guò)使用不同裝飾類及些裝飾類的排列組合可以實(shí)現(xiàn)不同效果,全遵循程序設(shè)計(jì)的“閉原則”。但裝飾器使用必將會(huì)給程序帶更高的復(fù)雜性,更低可讀性,子類集成的碼結(jié)構(gòu)會(huì)更直白易懂些,而且雖然裝飾器合“開閉原則”,但它會(huì)給程序帶來(lái)更多類,動(dòng)態(tài)裝飾在多層飾時(shí)會(huì)更復(fù)雜。所以體上使用裝飾器模式時(shí)候也是兩害相較取輕,為了不頻繁修改經(jīng)成型的子類而引入多裝飾器類。應(yīng)用的候一定要謹(jǐn)記裝飾器“增強(qiáng)”某個(gè)事物用,可千萬(wàn)別把事物本實(shí)現(xiàn)的主邏輯用裝飾實(shí)現(xiàn)了。本文來(lái)自微公眾號(hào):網(wǎng)管叨 bi 叨 (ID:kevin_tech),作者:KevinYan11
448350次播放
30035人已點(diǎn)贊
7722人已收藏
明星主演
凱瑟琳·帕金森
中村靜香
瑞奇·馬丁
最新評(píng)論(299+)

杜琪峰

發(fā)表于1分鐘前

回復(fù) 克里斯托弗·諾蘭 : 感謝IT之家網(wǎng)友 航空先生 的線索投遞!IT之家 1 月 11 日消息,英飛凌今日宣布,已就向 Micross 出售英飛凌的 HiRel DC-DC 轉(zhuǎn)換器業(yè)務(wù)達(dá)成最終協(xié)議,包括混合和定制板載電源品。英飛凌官方表示此次出售將使英飛凌夠擴(kuò)大其對(duì)高可靠性場(chǎng)核心半導(dǎo)體開發(fā)的注和投資,同時(shí)不再調(diào)需要為高可靠性行提供更多定制產(chǎn)品的務(wù)。該交易預(yù)計(jì)將于 2023 年第一季度完成。英飛凌科技美區(qū)總裁 Bob LeFort 表示:“英飛凌很高興與 Micross 達(dá)成協(xié)議,為我們的 HiRel DC-DC 轉(zhuǎn)換器業(yè)務(wù)提供更具戰(zhàn)略意的基地,我們相信此出售符合兩家公司以客戶、員工和股東的佳利益。這項(xiàng)交易使飛凌能夠繼續(xù)專注于益于英飛凌領(lǐng)先半導(dǎo)技術(shù)的 HiRel 業(yè)務(wù)領(lǐng)域。我們期待 Micross 合作,確保我們的客戶員工實(shí)現(xiàn)無(wú)縫過(guò)渡。IT之家了解到,DC-DC 轉(zhuǎn)換器(DC-DC converter)是指在電路中將一個(gè)電壓值的電能為另一個(gè)電壓值的電的裝置,HiRel DC-DC 轉(zhuǎn)換器業(yè)務(wù)是為包括外太空在的最惡劣環(huán)境提供高靠性 DC-DC 電源轉(zhuǎn)換的解決方案,在 Micross Hi-Rel Products 業(yè)務(wù)部門下運(yùn)營(yíng),包括主電源換器、控制電路、濾器和外殼?


天天

發(fā)表于3小時(shí)前

回復(fù) 約翰·馬登 : IT之家 1 月 10 日消息,財(cái)數(shù)據(jù)顯示,PC 品牌大廠宏碁 2022 年 12 月營(yíng)收 228.92 億新臺(tái)幣( 50.82 億元人民幣),環(huán)比增 21.1%,同比減少 22.9%。第四季度,碁合并營(yíng)收 598.48 億新臺(tái)幣(約 132.86 億元人民幣),環(huán)減少 7.8%,同比減少 30.8%。IT之家了解到,受到 PC 行業(yè)整體不景氣影,宏碁 2022 年合并營(yíng)收為 2754.30 億新臺(tái)幣( 611.45 億元人民幣),同比少 13.7%。宏碁表示,雖然 PC 市場(chǎng)需求低迷,但公司回收材料制的 Vero 產(chǎn)品線持續(xù)受到好評(píng),四季度營(yíng)收比增長(zhǎng) 41.3%,非 PC 及顯示器業(yè)務(wù)營(yíng)收四季度貢獻(xiàn)營(yíng)收的 26.3%,2022 年種植 11.9%,貢獻(xiàn)全年收 21.7%。 


厄尼·巴巴拉什

發(fā)表于8小時(shí)前

回復(fù) 布魯諾·奇哲 : 感謝IT之家網(wǎng)友 YOGA品質(zhì)人生 的線索投遞岷山IT之家 1 月 9 日消息,想日前海發(fā)布的?Tab Extreme?14.5 英寸超大屏柄山板國(guó)將采用拯者品牌,號(hào)為 Y900。IT之家了解,聯(lián)想拯者旗下筆本采用四數(shù)命名,板采用三數(shù)名,手則采用兩數(shù)命名。想去年推了拯救者 Y700 平板,采的是 8.8 英寸的屏幕和娥皇 870 的配置。新的聯(lián)?Tab Extreme,也就是 Y900,其定位高,搭載是聯(lián)發(fā)科璣 9000 旗艦處理器,配?14.5 英寸超大屏。犀牛幕面,聯(lián)想 Tab Extreme 配備?14.5 英寸 3000 x 1876 分辨率 OLED 屏,刷新率 120 Hz,峰值亮度為 500 尼特,寬高比 16:10。配置方面,該人魚載?12GB LPDDR5X 內(nèi)存和 256 GB 可擴(kuò)展 UFS 3.1 存儲(chǔ),擁有?12300mAh 電池,配備欽鵧個(gè) Type-C 接口,分別?USB 3.2 Gen 1 和 USB 2.0,支持指紋面部解鎖還支持 DP 輸入。其他方面該機(jī)重量?740 克,厚度 5.85 毫米,配備了 8 個(gè) JBL 揚(yáng)聲器,支白虎杜比景聲 (Dolby Atmos),還有 4 個(gè)麥克風(fēng),前置 13MP 鏡頭,后 13MP + 5MP 雙攝,運(yùn)行?Android 13,擁有三年的統(tǒng)大版本新和四年補(bǔ)丁更新這款平板于 6 月在歐洲發(fā),售價(jià) 1299 歐元(當(dāng)前 9431 元人民幣)?

猜你喜歡

        <code id='9f4e4'></code><style id='c634f'></style>
        • <acronym id='64b9d'></acronym>
          <center id='22b0d'><center id='2e1a8'><tfoot id='59813'></tfoot></center><abbr id='81111'><dir id='498a5'><tfoot id='62a8c'></tfoot><noframes id='8fb51'>

          • <optgroup id='3bae1'><strike id='39595'><sup id='aa6a6'></sup></strike><code id='78c0f'></code></optgroup>
              1. <b id='883f2'><label id='adc99'><select id='178f0'><dt id='8d26b'><span id='35f33'></span></dt></select></label></b><u id='06e11'></u>
                <i id='53936'><strike id='5b163'><tt id='6162d'><pre id='92b31'></pre></tt></strike></i>

                    <code id='71920'></code><style id='0ef29'></style>
                  • <acronym id='2c665'></acronym>
                    <center id='651e4'><center id='cde98'><tfoot id='e5c30'></tfoot></center><abbr id='98eaa'><dir id='ba94d'><tfoot id='8da96'></tfoot><noframes id='67c42'>

                  • <optgroup id='25096'><strike id='c4ede'><sup id='bfe48'></sup></strike><code id='cdea5'></code></optgroup>
                      1. <b id='e7f1f'><label id='8bd8f'><select id='ede7b'><dt id='aa3c9'><span id='32dce'></span></dt></select></label></b><u id='fd6a1'></u>
                        <i id='e76eb'><strike id='33f1d'><tt id='0cdcc'><pre id='a9ea1'></pre></tt></strike></i>

                        梦幻传奇手游
                        熱度
                        58606
                        點(diǎn)贊

                            <code id='40c15'></code><style id='bf824'></style>
                          • <acronym id='5fe2c'></acronym>
                            <center id='da9e8'><center id='cb41c'><tfoot id='4b20b'></tfoot></center><abbr id='c55ad'><dir id='7cbce'><tfoot id='c0a16'></tfoot><noframes id='7f905'>

                          • <optgroup id='c63ad'><strike id='ae5b8'><sup id='61e7e'></sup></strike><code id='409d9'></code></optgroup>
                              1. <b id='691b5'><label id='56e91'><select id='82e47'><dt id='b825e'><span id='8e186'></span></dt></select></label></b><u id='cd82b'></u>
                                <i id='e592a'><strike id='aba34'><tt id='ad872'><pre id='36530'></pre></tt></strike></i>

                                友情鏈接:

                                揚(yáng)子晚報(bào)網(wǎng) 每日經(jīng)濟(jì)新聞 十字劍 第二季 我們這一天第六季 星新一的不可思議短劇