<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          談?wù)勎夜ぷ髦械?3個(gè)設(shè)計(jì)模式

          共 3948字,需瀏覽 8分鐘

           ·

          2023-02-25 10:14

          從基礎(chǔ)的角度看,設(shè)計(jì)模式是研究類本身或者類與類之間的協(xié)作模式,是進(jìn)行抽象歸納的一個(gè)很好的速成思路。后面閱讀設(shè)計(jì)模式后,為了加深理解,對(duì)相關(guān)圖片進(jìn)行了描繪和微調(diào)。
          從技術(shù)的角度已經(jīng)有很多好的總結(jié),本文會(huì)換一種角度思考,既然設(shè)計(jì)模式研究的是類與類的關(guān)系,我們作為工作的個(gè)體,一些工作中的策略是不是也可以進(jìn)行類比,可以更好地去思考這些模式?答案是肯定的。

          創(chuàng)建型模式 5


          抽象工廠(Abstract Factory):多套方案

          抽象工廠模式是對(duì)創(chuàng)建不同的產(chǎn)品類型的抽象。對(duì)應(yīng)到工作中,我們的確應(yīng)該具備提供多套方案的能力,這也是我們常說的,要提供選擇題。當(dāng)你有這樣的前瞻意識(shí),一般也會(huì)被打上思考較多的標(biāo)簽,但是內(nèi)在來說,的確想問題更加全面了。
          ?

          生成器(Builder):善于分解

          生成器模式是對(duì)一個(gè)個(gè)體的創(chuàng)建過程進(jìn)行細(xì)分,拆解為不同的創(chuàng)建部分。這個(gè)對(duì)應(yīng)到工作中,作為一些項(xiàng)目管理人員或者團(tuán)隊(duì)管理者,需要將一個(gè)大泥球一樣的事務(wù),合理分解,讓大家各司其職,充分發(fā)揮才能。同樣,我們對(duì)日常的工作內(nèi)容,也可以按照結(jié)構(gòu)去進(jìn)行劃分,從而更有調(diào)理。?

          ??

          工廠方法(Factory Method):抽象思考

          工廠方法模式是說將提供某一產(chǎn)品的過程進(jìn)行抽象,通過接口的模式去規(guī)范出來。類似的,我們很多做事的過程,都是面向過程,沒有抽象提煉一下。如果經(jīng)過進(jìn)一步思考,那么可以往上再提煉一個(gè)層次,發(fā)現(xiàn)事物的本質(zhì):到底在做什么,我們的職責(zé)是什么,提供什么樣的價(jià)值。想的更清楚,做的也會(huì)更加準(zhǔn)確。?

          原型(Prototype):傳承知識(shí)

          原型模式是說,利用拷貝對(duì)象的方法,減少一些復(fù)雜的創(chuàng)建過程。這里我們能夠?qū)W到的是,需要做好日常的積累,很多方案不是每次來都重寫,是可以在原來的方案上進(jìn)行拷貝復(fù)用的。這個(gè)clone的過程,往往也是知識(shí)傳承的過程。如果有比較好的傳承機(jī)制,那么會(huì)大大提升服務(wù)效率。?

          單件(Singleton):專注

          單件模式是說在多線程的情況下,要保證對(duì)象只創(chuàng)建一遍,作為獨(dú)一無二的資源。這個(gè)我覺得,應(yīng)該去review一下我們的工作模式,雖然我們常常要并發(fā)很多事情,但是如果處處被打斷,每件事都想干好,那么可能每件事都干不好。我們要確保在某個(gè)時(shí)間段竭力地做好一件事。事件是一件件有效解決的,不是一起慢慢解決的。

          ?

          結(jié)構(gòu)型模式 7

          適配器(Adapter):適應(yīng)能力

          適配器是為了結(jié)合原來的能力,適配新的接口服務(wù),比如適配不同的協(xié)議入口。工作的時(shí)候,其實(shí)需要適應(yīng)不同的人和事,有不同的工作方法方式,但是我們的核心能力是一樣的,都是解決對(duì)應(yīng)的問題域。?

          橋接(Bridge):合理關(guān)系

          橋接模式是將原來相互依賴的部分,通過上層接口再往抽象層提一下,減少類之間的直接合作,形成間接關(guān)系。這個(gè)到對(duì)應(yīng)到工作中來說,有一種場(chǎng)景是,常常開發(fā)對(duì)開發(fā)去case by case解決問題。如果往產(chǎn)品邏輯層走一下,開發(fā)對(duì)產(chǎn)品,產(chǎn)品層面可能有更好的抽象。當(dāng)然為了更好的服務(wù)體驗(yàn),這樣的解耦是不多見的,但是這樣的思考我們可能要get一下。

          組合(Composite):遞歸思考

          組合模式通過繼承和孩子節(jié)點(diǎn),可以遞歸地去描述一個(gè)對(duì)象層次。這個(gè)對(duì)我們工作來說,要加深思考的層次,可以某個(gè)點(diǎn)拆開去再去思考,同時(shí)如果能夠在遞歸分解過程中抽象一些共性的點(diǎn),就能找到一些規(guī)律。比如我們的需求分解,每個(gè)需求可以分解為子需求,子需求再往下看又可以遞歸分解。分解完之后,每個(gè)部分有這部分的owner去驅(qū)動(dòng)他的下游,形成一個(gè)層次結(jié)構(gòu)。

          裝飾(Decorator):增量?jī)r(jià)值

          裝飾模式是將原來的能力進(jìn)行包裝,并提供新的行為。其實(shí)每次功能迭代,我們大多是在原來的基礎(chǔ)上添加新的功能。我們要定義好新的能力,首要前提是繼承、理解好原來的邏輯。這里還想提的是,很多時(shí)候,我們只看到了我們復(fù)用了龐大的基礎(chǔ)能力,但是也要看到我們?cè)陧?xiàng)目中增量的貢獻(xiàn),這是我們的閃光點(diǎn)。不要把“擰螺絲”真的看成了擰螺絲。?

          外觀(Facade):深入淺出

          外觀模式是說我們不需要理解復(fù)雜的系統(tǒng),而是通過一個(gè)外觀去操作。這里我們的工作思路是,我們不用展示復(fù)雜的細(xì)節(jié),我們要提供一些高層的理解,匯報(bào)如此,系統(tǒng)的包裝也是如此。就比如,服務(wù)功能孤立來看,可能很多、很雜,但如果有一個(gè)統(tǒng)一的站點(diǎn)去引導(dǎo)包裝,那么感覺會(huì)好很多,也會(huì)看上去有點(diǎn)收口和聚焦的感覺。

          享元(Flyweight):善于鏈接

          享元模式是說,當(dāng)我們已經(jīng)存在一些內(nèi)容的時(shí)候,可以通過緩存復(fù)用,而不是重新創(chuàng)建,減少開銷。我們?cè)诠ぷ髦幸惨龊梅e累,但是更要做好緩存的key,通過怎么樣的手段去鏈接到我們的工作中,是需要我們做好類目管理和持續(xù)積累的。

          代理(Proxy):理解保護(hù)

          代理是為了包裝一個(gè)類,對(duì)相關(guān)操作進(jìn)行二次轉(zhuǎn)發(fā)或者進(jìn)行一些管控。工作中來說,有些工作模式下,有時(shí)候我們可能會(huì)抱怨管理者代理了我們的決策等操作,但是換個(gè)角度想,他們保護(hù)了你不用直接被暴露在業(yè)務(wù)方側(cè),能夠按照預(yù)期內(nèi)的節(jié)奏提供服務(wù),不會(huì)被主動(dòng)設(shè)置一些預(yù)期外操作或私活。

          ?

          行為型模式 11


          責(zé)任鏈(Chain of Responsibility):能力與責(zé)任

          責(zé)任鏈?zhǔn)钦f將請(qǐng)求讓隊(duì)列內(nèi)的處理器一個(gè)個(gè)執(zhí)行,直到找到可以執(zhí)行的。這里對(duì)我們工作的啟示是,我們常常抱怨我們得到的機(jī)會(huì)少,不能成為隊(duì)列內(nèi)優(yōu)先可以處理的處理器,總是處理人家不需要的。但是換個(gè)角度看,首先責(zé)任鏈里面的處理器應(yīng)該是正交的,大家應(yīng)該各司其職。退一步來說,如果真的有重疊,那么你應(yīng)該努力提升自己,成為能力強(qiáng)的,從而提高隊(duì)列內(nèi)的優(yōu)先級(jí)。?

          命令(Command):加強(qiáng)合作

          命令模型是說將請(qǐng)求包裝為命令,這樣在執(zhí)行的時(shí)候可以與具體的執(zhí)行邏輯解耦。工作中來說,我們有時(shí)候不應(yīng)該太關(guān)心一個(gè)事情是怎么完成的,當(dāng)交給別人完成時(shí),信任他們即可,就是從解決問題的角度來看,不用事事親為,事事較真。但是這并不妨礙我們主動(dòng)養(yǎng)成全局視角,了解每個(gè)細(xì)節(jié)。合作才能影響更多的事情。

          解釋器(Interpreter):加強(qiáng)理解

          解釋器模式是說針對(duì)一套上下文,形成一套語言,可以通過解釋表達(dá)式含義的方式完成對(duì)應(yīng)的任務(wù)。這里來說,我們可以形成某個(gè)團(tuán)體的領(lǐng)域語言,內(nèi)部交流通過相關(guān)領(lǐng)域語言交流,可以增加交流效率。此外,其實(shí)不同層次都有不同層次的專業(yè)術(shù)語,有時(shí)候一個(gè)術(shù)語的解釋是一個(gè)方面的頓悟,還是要多了解工作內(nèi)容本身。

          迭代器(Iterator):橫向職責(zé)

          迭代器模式是將集合的訪問功能獨(dú)立出來,通過迭代的模式去訪問。這種獨(dú)立職責(zé)的操作,工作中我們常常會(huì)看到,我們會(huì)將需求管理,缺陷管理,資金安全的一些事情獨(dú)立出來看。一個(gè)方面是這些功能塊從主體來說是比較內(nèi)聚的,另一個(gè)來方面說,對(duì)工作職責(zé)的細(xì)分,可以讓大家把自己的事情干好,發(fā)揮團(tuán)隊(duì)作戰(zhàn)的效能:開發(fā)把開發(fā)干好,測(cè)試把測(cè)試干好,資損防護(hù)同學(xué)把資損防護(hù)干好,整體也就做好了。

          中介者(Mediator):協(xié)調(diào)能力

          中介模式是說:當(dāng)多個(gè)類之間要協(xié)調(diào)的時(shí)候,往往引入中介者進(jìn)行協(xié)調(diào),減少大家的知識(shí)成本。這個(gè)我們常常需要一些PM、PMO這樣的角色去管理項(xiàng)目,系統(tǒng)中也需要一些協(xié)調(diào)層去協(xié)調(diào)各個(gè)域。因此我們也注重培養(yǎng)協(xié)調(diào)事務(wù)、具備全局觀的能力。

          備忘錄(Memento):小步快跑

          備忘錄模式是對(duì)操作的一些記錄,已被可以恢復(fù)到之前的版本。在日常工作中,我們常常需要及時(shí)備份、及時(shí)保存、及時(shí)提交等操作,這樣在程序崩潰的時(shí)候可以快速恢復(fù)到之前版本。但從抽象來說,一些比較長(zhǎng)時(shí)費(fèi)力的事情,我們應(yīng)該分解來做,及時(shí)鎖住部分收益。?

          觀察者(Observer):主觀能動(dòng)性

          觀察者模式是說我們通過注冊(cè)、回掉這樣的協(xié)作設(shè)計(jì),完成變化通知的協(xié)作機(jī)制。這個(gè)工作中來說,換個(gè)角度思考,我們可以將一些被動(dòng)的工作,變成主動(dòng)的思考。比如:我需要干某部分工作,從工作的角度來說,不得不做,從主動(dòng)的角度來說,就是需要培養(yǎng)某塊的能力。如果對(duì)工作內(nèi)容不太滿意,也可以溝通協(xié)調(diào),而不是事后爆發(fā),凡是都是可以主觀驅(qū)動(dòng)的。

          狀態(tài)(State):管理自己

          狀態(tài)模式是說在不同的狀態(tài)下,有不同的處理行為。對(duì)工作中來說,我們可能有狀態(tài)好的時(shí)候,有狀態(tài)不好的時(shí)候,主觀的處理的手段是調(diào)整狀態(tài)。但是如果調(diào)整不過來,我們應(yīng)該進(jìn)行不同的操作。比如,腦子好的時(shí)候,想一些復(fù)雜問題;腦子嗡嗡的時(shí)候,做一些簡(jiǎn)單整理。??

          策略(Strategy):理解決策

          策略模式是說完成一個(gè)事情有不同的算法,可以進(jìn)行相關(guān)切換。我們?cè)诠ぷ髦校3?huì)提供不同的方案,不同的方案有不同的成本和收益,但是這些方案的選擇時(shí)候,往往不是我們能決定的,而是客戶client主動(dòng)判斷的。
          ?

          模板(Template):標(biāo)準(zhǔn)化能力

          模版模式是說對(duì)一個(gè)執(zhí)行過程進(jìn)行抽象分解,通過骨架和擴(kuò)展方法完成一個(gè)標(biāo)準(zhǔn)的主體邏輯和擴(kuò)展。我們很多時(shí)候,做xxx平臺(tái)也都是這樣的:對(duì)過程進(jìn)行標(biāo)準(zhǔn)化,對(duì)變化進(jìn)行定義,形成一個(gè)平臺(tái)邏輯和業(yè)務(wù)擴(kuò)展,完成一個(gè)產(chǎn)品模版。只是說這個(gè)模版是站點(diǎn),還是擴(kuò)展點(diǎn),還是其他的展示形式。這樣標(biāo)準(zhǔn)化的能力也是需要長(zhǎng)期訓(xùn)練的。

          訪問者(Visitor):學(xué)會(huì)放手

          訪問者模式是說把對(duì)元素的訪問操作交給訪問者來操作,因?yàn)閷?duì)訪問者來說常常有不同的訪問行為。在工作中,往往我們只能陳述事實(shí),這個(gè)內(nèi)容消化后,每個(gè)人都有自己的理解。代碼協(xié)作也是一樣,比如:頁面到底長(zhǎng)什么樣,其實(shí)還是要交還給業(yè)務(wù)本身,我們應(yīng)該專注于提供基礎(chǔ)的能力。


          總結(jié)

          作為開發(fā)者,我們對(duì)于如何寫出優(yōu)雅的代碼,表示疑惑。因?yàn)槌31澈笫菑?fù)雜的問題域,優(yōu)雅的設(shè)計(jì)往往產(chǎn)生于局部,很難整體都很優(yōu)雅。
          作為工作者,我們對(duì)于如何做出好的表現(xiàn),表示疑惑。因?yàn)楸澈蟪3J蔷C合素質(zhì)與機(jī)遇的結(jié)合,好的結(jié)果往往產(chǎn)生于一個(gè)階段,長(zhǎng)期需要較快且持續(xù)的成長(zhǎng)。
          但是,如果我們有一些指導(dǎo)性的原則,往往我們能夠明白事務(wù)的折中點(diǎn),做出更加合理的設(shè)計(jì),以及更加關(guān)鍵的貢獻(xiàn)。

          瀏覽 31
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天舔天天射天天干 | 国产精品 男同 | 成人大香蕉 | 欧美另类成人 | 亚洲人成在线播放 |