日韩性视频-久久久蜜桃-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

總結

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

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

主站蜘蛛池模板: 久久久免费在线观看 | av在线不卡观看 | 一级黄色电影片 | 一区二区三区四区精品 | 夜夜嗨视频| 丝袜视频在线观看 | 99热一区二区三区 | av在线最新| 日日夜夜精品视频 | 欧美一区二区三区婷婷月色 | 91天天| 日本最新中文字幕 | xxxxx色| 国产精品美女av | 一区二区不卡在线 | 日本欧美国产在线 | 91精品专区 | 日本久久精品 | 在线观看三级网站 | 国产视频你懂的 | 日韩av网站大全 | 厕拍极品 | 蜜臀麻豆 | 少妇被躁爽到高潮无码人狍大战 | 亚洲乱熟女一区二区 | 久久久国产网站 | 交hdsexvideos娇小 | 外国一级片 | 国产成人综合欧美精品久久 | 色噜av | 国产一区二区三区乱码 | 午夜一区二区三区免费 | 又色又爽又黄无遮挡的免费视频 | 夜夜嗨一区 | 日韩精品偷拍 | 久久久亚洲一区 | 性欧美8khd高清极品 | 欧美黄色大片在线观看 | 亚洲国产精品国自产拍久久 | 精品亚洲永久免费精品 | aa毛片视频 | 欧美一级片网站 | 日韩欧美一级在线 | 看黄网站在线观看 | 国产精品入口麻豆九色 | 亚洲欧美第一视频 | 免费看60分钟黄视频 | 在线观看国产区 | 欧美亚洲精品在线观看 | 色呦呦视频在线观看 | 天天色天天搞 | 极品探花在线 | 熟女高潮一区二区三区视频 | 午夜在线看 | 国产成人一区二区三区别 | 国产精品天美传媒入口 | 久久亚洲精精品中文字幕早川悠里 | 熟女视频一区 | 亚洲情区 | 少妇又色又紧又爽又刺激视频 | 国产一级在线观看 | 成人羞羞国产免费动态 | 亚洲成a人在线观看 | 泰国午夜理伦三级 | 婷婷综合网| 午夜电影一区二区三区 | 亚洲视频一区在线 | 综合天天色 | 500部大龄熟乱视频 亚洲乱码精品 | 粉嫩av | 国产精品人人妻人人爽人人牛 | 国产精品久久久久三级无码 | 亚洲精品天堂成人片av在线播放 | 欧美人狂配大交3d | 国产xxxx18| 黑鬼巨鞭白妞冒白浆 | 国产av无码专区亚洲精品 | 欧美一级片免费 | 波多野结衣高清电影 | 69视频在线观看 | 免费视频成人 | 四虎最新域名 | 日本一区免费看 | 漂亮人妻洗澡被公强 日日躁 | 91超碰免费在线 | 福利视频免费观看 | wwwxx在线| 久久精品一本 | 欧美日韩国产二区 | 国产一级片 | 播播激情网 | 国内精品久久久久久久影视简单 | 亚洲精品在线视频免费观看 | 涩涩视频在线播放 | 免费无码不卡视频在线观看 | 日韩1区2区3区 | 中文字幕免费高清视频 | 夜夜天天操| 在线观看免费国产 |