吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

演示裝飾器模式的用法

冬至子 ? 來源:碼農架構 ? 作者:小智 ? 2023-06-08 11:16 ? 次閱讀

裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有的類的一個包裝。

這種模式創建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。

我們通過下面的實例來演示裝飾器模式的用法。其中,我們將把一個形狀裝飾上不同的顏色,同時又不改變形狀類。

結構圖

圖片

角色與理解

  • 裝飾模式共分為四種角色:
  • Component (抽象構件):具體構件與抽象裝飾類的共同父類,聲明具體構件中實現的業務方法,它的出現能夠讓客戶端一致的透明的對待裝飾前和裝飾后的類
  • ConcreteComponent (具體構件):抽象構件的子類,實現具體的業務方法
  • Decorator (抽象裝飾類):抽象構件的子類,內部維持一個抽象構件的引用,通過該引用調用具體構件的業務方法
  • ConcreteDecorator (具體裝飾類):抽象裝飾類的實現類,聲明并實現各種裝飾方法實現對具體構件的裝飾
  • 具體構件和裝飾具體構件的抽象裝飾類通過注入的方式被抽象裝飾類繼續裝飾
  • 因為具體構件和抽象裝飾類都繼承抽象構件,所以被裝飾時可以被同樣的對待,更加靈活

核心代碼

  • 抽象組件

圖片

  • 具體構件

圖片

  • 抽象裝飾類

圖片

  • 具體裝飾類

圖片

  • 客戶端

圖片

注意事項

  • 盡量保持裝飾類與被裝飾類的接口相同,確保在客戶端調用時能夠被一致對待
  • 被裝飾類盡量是一個“輕”類,較少的職能,通過裝飾類對其進行擴展
  • 如果具體構件類只有一個,那么抽象裝飾類可以直接是具體構件類的子類
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • pattern
    +關注

    關注

    0

    文章

    6

    瀏覽量

    9651
收藏 人收藏

    評論

    相關推薦

    理解Python裝飾及其工作原理

    Python 是一種對新手很友好的語言。但是,它也有很多較難掌握的高級功能,比如裝飾(decorator)。很多初學者一直不理解裝飾及其工作原理,在這篇文章中,我們將介紹
    發表于 10-08 11:39 ?2247次閱讀

    SeaORM的基礎用法

    可讀性。 在本教程中,我們將介紹SeaORM的基本用法和進階用法。我們將使用SQLite數據庫來演示這些用法。 基礎用法 在使用SeaORM
    的頭像 發表于 09-19 14:37 ?2547次閱讀

    基于Rust語言Hash特征的基礎用法和進階用法

    ,包括Hash trait、HashMap、HashSet等,本教程將詳細介紹Rust語言Hash特征的基礎用法和進階用法。 基礎用法 使用Hash trait 在Rust語言中,Hash trait
    的頭像 發表于 09-19 16:02 ?1541次閱讀

    定時的基本用法是什么

    定時是單片機里非常重要的一個模塊,必須熟練掌握,本篇按這樣的順序展開:一、簡單介紹定時二、定時基本用法三、定時高級使用技巧(linu
    發表于 07-16 09:01

    OpenHarmony裝飾指定自定義組件:@BuilderParam裝飾

    引入了@BuilderParam裝飾,@BuilderParam用來裝飾指向@Builder方法的變量,開發者可在初始化自定義組件時對此屬性進行賦值,為自定義組件增加特定的功能。該裝飾
    發表于 09-27 16:02

    適配器模式裝飾模式、代理模式的區別

    適配器模式裝飾模式、代理模式都屬于設計模式中的結構型模式
    發表于 10-18 15:53 ?1.7w次閱讀
    適配器<b class='flag-5'>模式</b>、<b class='flag-5'>裝飾</b><b class='flag-5'>器</b><b class='flag-5'>模式</b>、代理<b class='flag-5'>模式</b>的區別

    適配器模式裝飾模式的區別

    裝飾模式指的是在不必改變原類文件和使用繼承的情況下,動態地擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。在計算機編程中,適配器模式(有時候也稱包裝樣式或者包
    發表于 01-15 10:31 ?7031次閱讀
    適配器<b class='flag-5'>模式</b>和<b class='flag-5'>裝飾</b><b class='flag-5'>模式</b>的區別

    Python:裝飾的原理和案例

    Python中的裝飾器用于擴展可調用對象的功能,而無需修改其結構。基本上,裝飾函數包裝另一個函數以增強或修改其行為。我們可以通過一個具體的例子了解基礎知識!讓我們編寫一個包含裝飾
    的頭像 發表于 07-01 11:35 ?2280次閱讀

    GoF給裝飾模式的定義

    的源碼,就會發現 middleware 功能的實現用的就是裝飾模式(Decorator Pattern)。
    的頭像 發表于 06-29 10:22 ?852次閱讀

    嵌入式C語言軟件設計之裝飾模式(Decorator Pattern)

    裝飾模式(Decorator Pattern),是結構型設計模式的一種,裝飾
    發表于 03-01 10:55 ?450次閱讀

    在Python中裝飾的使用

    定義 首先我們先來了解下裝飾的定義。顧名思義,在Python中,裝飾本質上就是一個函數,它可以接收一個函數作為參數,然后返回一個新的函數。這個新的函數可以在執行原有函數之前或之后,
    的頭像 發表于 06-21 16:54 ?784次閱讀

    裝飾模式和代理模式的區別

    什么是裝飾模式 裝飾模式(Decorator Pattern): 在不改變對象自身的基礎上,
    的頭像 發表于 10-08 14:25 ?4125次閱讀
    <b class='flag-5'>裝飾</b><b class='flag-5'>器</b><b class='flag-5'>模式</b>和代理<b class='flag-5'>模式</b>的區別

    Python自制簡單實用的日志裝飾

    在寫代碼的時候,往往會漏掉日志這個關鍵因素,導致功能在使用的時候出錯卻無法溯源。 其實,只需要寫一個非常簡單的日志裝飾,我們就能大大提升排查問題的效率。 1.簡陋版裝飾 寫一個
    的頭像 發表于 10-21 14:39 ?773次閱讀
    Python自制簡單實用的日志<b class='flag-5'>裝飾</b><b class='flag-5'>器</b>

    Python 自制簡單實用的日志裝飾

    在寫代碼的時候,往往會漏掉日志這個關鍵因素,導致功能在使用的時候出錯卻無法溯源。 其實,只需要寫一個非常簡單的日志裝飾,我們就能大大提升排查問題的效率。 1.簡陋版裝飾 寫一個
    的頭像 發表于 10-31 15:05 ?529次閱讀
    Python 自制簡單實用的日志<b class='flag-5'>裝飾</b><b class='flag-5'>器</b>

    如何寫一個簡單的裝飾

    今天介紹的是一個已經存在十三年,但是依舊不紅的庫 decorator,好像很少有人知道他的存在一樣。 這個庫可以幫你做什么呢 ? 其實很簡單,就是可以幫你更方便地寫python裝飾代碼,更重
    的頭像 發表于 11-01 09:54 ?533次閱讀
    如何寫一個簡單的<b class='flag-5'>裝飾</b><b class='flag-5'>器</b>
    百家乐官网娱乐平台代理佣金 | 百家乐官网必赢法冯耘| 奔驰娱乐城开户| 百家乐现金网平台排行榜| 百家乐官网棋牌游戏皇冠网| 大发888真人游戏| 百家乐官网平注资讯| 百家乐官网投注组合| 大发888娱乐城登陆| 澳门百家乐娱乐城信誉如何| 线上百家乐官网网站| 波音开户| 百家乐微笑打| 做生意店铺风水| 玩百家乐官网技巧博客| 大发888客服电话多少| 好运来百家乐官网的玩法技巧和规则| 宜黄县| 百家乐平注法到6568| 百家乐官网平客户端| 澳门百家乐官网规则| 362娱乐城开户| 什么事百家乐的路单| 百家乐官网赌场破解| 网络赌场| 大发888怎么注册| 澳门百家乐官网技巧经| 博彩导航| 威尼斯人娱乐城玩百家乐| 百家乐合理的投注法| 百家乐官网现金平台排名| 德州扑克 下载| 百家乐可以破解吗| 24山六十日吉凶| 百家乐官网盈利分析路单| 金冠娱乐城注册| 百家乐跟路技巧| 娱乐百家乐官网的玩法技巧和规则 | 百家乐官网太阳城小郭| bet365苹果| 百家乐缩水|