Aha!設計模式 58 裝飾模式 2

2021-09-13 18:55:37 字數 761 閱讀 4822

示例**

我們從前一篇文章中選取網路資料處理的例子寫一段python**。

**中首先定義了資料處理基類dataprocessor,它有乙個process操作用於處理資料。

datacreater是乙個普通的派生類,用於初始化資料。

然後是decorator類,它定義了乙個資料成員processor,用於管理裝飾物件。在decorator的process方法中,只是簡單地呼叫processor成員的process方法。processor可以是dataprocess的任何派生類的物件,還可以拿著其他的processor,這種關係不斷地繼續下去,直至滿足需求為止。

接下來定義校驗裝飾器和加密裝飾器。這裡的實現只是輸出字串。

主程式分別實現了資料生成器+加密裝飾和資料生成器+校驗裝飾組合。其輸出如下:

示例類圖

為了便於理解,下面給出**的類圖。

Aha!設計模式 65 享元模式 2

適用性 以下的情況下可以適用享元模式。應用程式中大量存在相同或相似狀態的物件時。由於應用程式功能方面的需求,需要在不同物件之間共享資料或物件時。結構 參與者 flyweight translator 定義享元的介面,一般來講介面的引數是無法共通的部分。相對於享元儲存的資料來講,稱為外部資料。conc...

Aha!設計模式 86 迭代器模式 2)

適用性 為訪問不同構成的聚合物件提供統一的方法。支援以統一的方法實現不同形式的遍歷。歸納成一句話,就是使用迭代器模式可以以一種方式對不同構成的物件實現不同種類的遍歷。結構 參與者 iterator 抽象迭代器類 抽象迭代器定義取得和遍歷元素所需要的介面。類圖中定義的介面只是乙個示例。在實際的應用中,...

Aha!設計模式 55 組合模式 2

適用性 組合模式的適用場景很明確 只要是樹形資料結構都可以考慮適用組合模式。結構 參與者 component graphic 為樹形資料結構上的節點宣告標準介面。和所有的基類一樣,也可以根據實際情況為某些結構提供預設實現。宣告用於訪問和管理下級節點的介面。leaf rectangle line te...