日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

用装饰器设计模式装饰

發布時間:2023/12/3 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用装饰器设计模式装饰 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

裝飾圖案是廣泛使用的結構圖案之一。 此模式在運行時動態更改對象的功能,而不會影響對象的現有功能。 簡而言之,此模式通過包裝將附加功能添加到對象。

問題陳述:

想像一下我們有一個比薩餅,該比薩餅已經用番茄和奶酪烤制的情況。 之后,您只需要記住,您需要根據客戶的選擇添加一些其他澆頭。 因此,您需要在旅途中再添加一些配料,例如雞肉和胡椒粉。

意圖:

動態地從對象中添加或刪除其他功能或職責,而不會影響原始對象。
有時需要在無法通過子類添加功能的情況下進行,因為這可能會創建子類的負??載。

解:

因此,在這種情況下,我們不是在使用繼承為對象(例如披薩)添加其他功能,而是在使用合成。 當我們不想使用繼承而是使用組合時,此模式很有用。

結構體

裝飾器設計模式結構

以下是“裝飾器設計”模式的參與者:

  • 組件 –這是包裝程序,在運行時可以承擔與其相關的其他職責。
  • 具體組件 –是添加了附加功能的原始對象。
  • 裝飾器 -這是一個抽象類,其中包含對組件對象的引用,并且還實現了組件接口。
  • 具體的裝飾器 -它們擴展了裝飾器并在Component類的頂部構建了附加功能。

例:

裝飾器設計模式示例

在上面的示例中,Pizza類充當Component,BasicPizza是需要裝飾的具體組件。 PizzaDecorator充當Decorator抽象類,其中包含對Pizza類的引用。 ChickenTikkaPizza是ConcreteDecorator,它為Pizza類構建了附加功能。

讓我們總結一下實現裝飾器設計模式的步驟:

  • 創建一個我們要裝飾的BasicPizza(混凝土組件)的接口。
  • 創建一個抽象類PizzaDecorator,其中包含Pizza(decorated)接口的引用字段。
  • 注意:裝飾器(PizzaDecorator)必須擴展相同的裝飾(Pizza)接口。
  • 現在,我們需要在decorator的構造函數中傳遞要裝飾的Pizza對象。
  • 讓我們創建混凝土裝飾器(ChickenTikkaPizza),它應該提供附加澆筑的附加功能。
  • Concrete Decorator(ChickenTikkaPizza)應該擴展PizzaDecorator抽象類。
  • 將裝飾器(bakePizza())的方法重定向到裝飾類的核心實現。
  • 覆蓋需要更改行為的方法(bakePizza()),例如添加Chicken Tikka澆頭。
  • 讓客戶端類通過在Concrete Component(BasicPizza)的幫助下創建Concrete Decorator(ChickenTikkaPizza)來創建Component type(Pizza)對象。
  • 簡而言之:新組件=混凝土組件+混凝土裝飾器

比薩披薩=新的ChickenTikkaPizza(新的BasicPizza());

代碼示例:

BasicPizza.java

public String bakePizza() {return 'Basic Pizza';}

Pizza.java

public interface Pizza {public String bakePizza(); }

PizzaDecorator.java

public abstract class PizzaDecorator implements Pizza {Pizza pizza;public PizzaDecorator(Pizza newPizza) {this.pizza = newPizza;}@Overridepublic String bakePizza() {return pizza.bakePizza();} }

ChickenTikkaPizza.java

public class ChickenTikkaPizza extends PizzaDecorator {public ChickenTikkaPizza(Pizza newPizza) {super(newPizza);}public String bakePizza() {return pizza.bakePizza() + ' with Chicken topping added';} }

客戶端程序

public static void main(String[] args) {Pizza pizza = new ChickenTikkaPizza(new BasicPizza());System.out.println(pizza.bakePizza());}

優點:

裝飾器設計模式比標準繼承提供了更大的靈活性。 繼承還以靜態方式擴展了父類責任。 但是裝飾器允許以動態方式執行此操作。

退稅:

代碼調試可能很困難,因為此模式會在運行時添加功能。

有趣的一點:

  • 適配器模式將不同的接口插入在一起,而裝飾器模式則增強了對象的功能。
  • 與裝飾器模式不同,策略模式無需更改即可更改原始對象。
  • 代理模式控制對對象的訪問時,裝飾器模式增強了對象的功能。
  • Composite和Decorator模式都使用相同的樹結構,但兩者之間存在細微的差異。 當我們需要將具有相似行為的一組對象保留在另一個對象中時,可以使用復合模式。 但是,當我們需要在運行時修改對象的功能時,會使用裝飾器模式。
  • Java API中有許多裝飾器模式的實時示例。
    • java.io.BufferedReader;

如果我們看到了BufferedReader的構造函數,那么我們可以看到BufferedReader通過添加更多功能(例如,在reader類中不存在的readLine())包裝了Reader類。

我們可以使用與上述示例相同的格式來說明客戶端如何使用修飾符模式new BufferedReader(new FileReader(new File(“ File1.txt”)));

同樣, BufferedInputStream是裝飾對象FileInputStream的裝飾器。

BufferedInputStream bs = new BufferedInputStream(new FileInputStream(new File(“ File1.txt”))));

參考: 四人幫–在Idiotechie博客上使用JCG合作伙伴 Mainak Goswami的裝飾設計圖案進行裝飾 。

翻譯自: https://www.javacodegeeks.com/2012/12/decorate-with-decorator-design-pattern.html

總結

以上是生活随笔為你收集整理的用装饰器设计模式装饰的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 特级免费毛片 | 日本不卡高字幕在线2019 | 亚洲一区二区三区在线观看视频 | 午夜视频福利网站 | 人妻精品一区二区三区 | 亚洲天堂av片 | 67194成人在线 | 亚洲第一二三区 | 亚洲精品1 | 久久久噜噜噜久久中文字幕色伊伊 | 免费在线播放 | 国产一级做a爰片久久毛片男男 | av网站免费在线 | 欧美另类xxxx | 福利视频免费看 | 91精品国产综合久久香蕉922 | 天使色吧 | 秋霞影院午夜丰满少妇在线视频 | 国产女人18毛片水18精品 | 少妇高潮一区二区三区99刮毛 | 国产成人精品一区二区三区网站观看 | 欧美交换国产一区内射 | 日本视频在线免费观看 | 在线成年人视频 | 亚洲天堂麻豆 | 三上悠亚一区二区三区 | 国产精品高清无码在线观看 | 日韩午夜激情视频 | 影音先锋波多野结衣 | 天堂岛av| 狠狠干在线 | 天天综合天天干 | wwyoujizzcom | 欧美性色a | 国产二级视频 | 一本色道久久综合亚洲精品小说 | 福利影院在线观看 | 成人在线观看一区二区 | 激情五月色综合国产精品 | 麻豆亚洲av熟女国产一区二 | 欧美另类xxxx | 欲色综合 | 神马久久久久久久久久久 | 这里只有精品免费视频 | 在线观看国产亚洲 | 色哟哟网站在线观看 | 成人mv在线观看 | a级在线视频 | 快播日韩| 亚洲男人天堂2019 | 不卡的av | 情侣自拍av | 欧美激情不卡 | 国产日产亚洲系列最新 | 日本jizz在线观看 | 午夜国产视频 | 日本一区二区精品 | 国产乱人乱偷精品视频a人人澡 | 日韩欧美高清在线视频 | 一起草av在线 | 国产尻逼视频 | 欧美粗又大 | 亚洲字幕成人中文在线观看 | 天天干女人 | 欧美日韩一区二区在线观看 | 中文字幕av播放 | 亚洲天堂视频在线播放 | 久久狠狠干| 动漫av一区| 国产三级精品在线观看 | 91资源在线播放 | 亚洲自拍偷拍网站 | 婷婷色图 | 日韩欧美三级在线观看 | 日本老年老熟无码 | 麻豆精品国产精华精华液好用吗 | 成人毛片18女人毛片 | 色噜噜狠狠狠综合曰曰曰 | 免费看黄视频的网站 | 欧美高清性xxxxhd | 小视频在线免费观看 | 自拍偷拍第一页 | 欧美vieox另类极品 | 五月综合激情日本mⅴ | 99精品99| 亚洲三级免费 | 欧美日韩中文字幕 | 阿娇全套94张未删图久久 | 在线看免费| 超碰95在线 | 国产成人黄色av | 欧美剧场 | 在线中文字幕网站 | 免费观看成年人网站 | 成年人视频免费在线观看 | 深夜福利国产精品 | 丁香婷婷激情 | 日韩大片免费在线观看 | 国产3级 |