《設(shè)計(jì)模式》之總結(jié)

設(shè)計(jì)模式在很早之前有明確的定義,使用意圖,場(chǎng)景;
但是在現(xiàn)代的很多編程語(yǔ)言中,就內(nèi)置的設(shè)計(jì)模式,比如C#的事件、委托特性,就是觀(guān)察者模式的體現(xiàn);

現(xiàn)在的前端框架Vue,整個(gè)Model就是依靠Object對(duì)象,攔截方法set,然后通知視圖更新;React生態(tài)里有個(gè)狀態(tài)管理框架Mobx,都是用觀(guān)察者模式實(shí)現(xiàn)的,每個(gè)class的屬性加上Observable,就可以讓屬性可觀(guān)察,View里加上Observer裝飾器,這樣,當(dāng)observable的屬性改變后,View就會(huì)自動(dòng)分析該不該更新視圖,這都是觀(guān)察者模式的體現(xiàn);

又比如JavaScript/Typescript中的裝飾器Decorator,層層包裹function,還有Python的Decorator,這是裝飾器的體現(xiàn);

又如Java的動(dòng)態(tài)代理,這其實(shí)就是代理模式,Spring框架的AOP面向切面編程,攔截方法的調(diào)用,然后擴(kuò)展邏輯,再?zèng)Q定是否要調(diào)用原來(lái)的邏輯;更有底層的CGLib,直接動(dòng)態(tài)生成字節(jié)碼類(lèi);很方便擴(kuò)展邏輯;但對(duì)于使用者是無(wú)感知的;

最后,其實(shí)我一直都覺(jué)得設(shè)計(jì)模式?jīng)]有固定的使用方式,只要能達(dá)到設(shè)計(jì)者的目的,可以靈活組合使用;而且不一定要像GoF定義的那樣,必須得要有這個(gè)接口,那個(gè)接口,這個(gè)抽象那個(gè)抽象,沒(méi)有必要的;只要達(dá)到目的,寫(xiě)出高內(nèi)聚低耦合、可擴(kuò)展、可維護(hù)的代碼就可以了;

我覺(jué)得,可維護(hù)的代碼才是牛逼的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容