中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

濟(jì)南做網(wǎng)站優(yōu)化公司百度超級(jí)鏈

濟(jì)南做網(wǎng)站優(yōu)化公司,百度超級(jí)鏈,自己做網(wǎng)站什么網(wǎng)站比較好,做非法網(wǎng)站的有沒有裝飾模式詳細(xì)講解 一、定義二、裝飾模式結(jié)構(gòu)核心思想模式角色模式的UML類圖應(yīng)用場(chǎng)景模式優(yōu)點(diǎn)模式缺點(diǎn) 實(shí)例演示圖示代碼演示運(yùn)行結(jié)果 一、定義 裝飾模式(別名:包裝器) 裝飾模式(Decorator Pattern)是結(jié)構(gòu)型的設(shè)計(jì)模式…

裝飾模式詳細(xì)講解

  • 一、定義
  • 二、裝飾模式結(jié)構(gòu)
      • 核心思想
      • 模式角色
      • 模式的UML類圖
      • 應(yīng)用場(chǎng)景
      • 模式優(yōu)點(diǎn)
      • 模式缺點(diǎn)
  • 實(shí)例演示
      • 圖示
      • 代碼演示
      • 運(yùn)行結(jié)果

一、定義

裝飾模式(別名:包裝器)
裝飾模式(Decorator Pattern)是結(jié)構(gòu)型的設(shè)計(jì)模式,它允許在運(yùn)行時(shí)動(dòng)態(tài)地向?qū)ο筇砑?strong>新的職責(zé)或功能,同時(shí)保持對(duì)象的原始類不變。通過使用裝飾器模式,可以在不修改現(xiàn)有代碼的基礎(chǔ)上擴(kuò)展對(duì)象的功能,

二、裝飾模式結(jié)構(gòu)

核心思想

1.動(dòng)態(tài)擴(kuò)展:在不改變?cè)惤Y(jié)構(gòu)和繼承關(guān)系的情況下,動(dòng)態(tài)地為對(duì)象添加功能。
2.包裝對(duì)象:通過創(chuàng)建一個(gè)包裝對(duì)象(裝飾器)來包裹真實(shí)對(duì)象,增加額外功能。
3.接口一致性:裝飾器與真實(shí)對(duì)象有相同的接口,確保客戶端能以相同的方式與兩者交互。
4.開閉原則:對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。新的功能通過添加裝飾器實(shí)現(xiàn),而不是修改原類。
5.靈活組合:允許通過組合多個(gè)裝飾器來創(chuàng)建功能更為豐富的對(duì)象

模式角色

1.抽象組件(Component):定義一個(gè)接口,用于規(guī)范準(zhǔn)備接收附加責(zé)任的對(duì)象(即被裝飾對(duì)象)。
2.具體組件(ConcreteComponent):實(shí)現(xiàn)抽象組件接口,是裝飾器要裝飾的真實(shí)對(duì)象。
3.裝飾器(Decorator):持有一個(gè)抽象組件的引用,并繼承抽象組件的接口。它既可以使用所持有的引用調(diào)用被裝飾的組件的方法,也可以增加新的功能。
4.具體裝飾器(ConcreteDecorator):實(shí)現(xiàn)裝飾器接口并給具體組件添加職責(zé)。它通常包含對(duì)具體組件的引用,以及一個(gè)或多個(gè)用于增加功能的額外方法。
這些角色在裝飾模式中的交互方式是:

  • 抽象組件定義了所有裝飾器對(duì)象和被裝飾對(duì)象需要實(shí)現(xiàn)的接口。
  • 具體組件實(shí)現(xiàn)了抽象組件接口,是準(zhǔn)備被裝飾的對(duì)象。
  • 裝飾器持有一個(gè)對(duì)抽象組件的引用,并且實(shí)現(xiàn)了抽象組件接口。它可以使用這個(gè)引用來調(diào)用被裝飾對(duì)象的方法,并在調(diào)用前后添加新的功能。
  • 具體裝飾器實(shí)現(xiàn)了裝飾器接口,并且給具體組件添加新的職責(zé)。它通常包含一個(gè)指向被裝飾對(duì)象的引用,以及用于實(shí)現(xiàn)附加功能的代碼。

模式的UML類圖

在這里插入圖片描述

應(yīng)用場(chǎng)景

  • 當(dāng)需要為單個(gè)對(duì)象提供多種不同的行為或者表現(xiàn)形式時(shí)。
  • 需要向一個(gè)已經(jīng)存在的類中添加功能,但又不希望修改該類的源代碼或繼承其子類時(shí)
  • 組合對(duì)象:當(dāng)需要組合多個(gè)對(duì)象來創(chuàng)建一個(gè)具有更多功能的對(duì)象時(shí),裝飾模式是一個(gè)很好的選擇。通過遞歸組合方式,可以構(gòu)建出一個(gè)具有多種功能的對(duì)象。例如,在文件系統(tǒng)中,文件夾可以被視為一個(gè)特殊的文件,它可以包含其他文件和文件夾。使用裝飾模式,可以將文件夾裝飾為一個(gè)包含額外功能的對(duì)象,如支持加密、壓縮等

模式優(yōu)點(diǎn)

  • 動(dòng)態(tài)地給對(duì)象添加功能,相比生成子類更加靈活、透明。
  • 無需修改原有類就可以擴(kuò)展功能,符合開閉原則。
  • 裝飾器可以被組合,以便在運(yùn)行時(shí)動(dòng)態(tài)地、多次地添加多個(gè)職責(zé)。

模式缺點(diǎn)

  • 這種比繼承更加靈活機(jī)動(dòng)的特性,也同時(shí)意味著更加多的復(fù)雜性。
  • 裝飾模式會(huì)導(dǎo)致設(shè)計(jì)中出現(xiàn)許多小類,如果過度使用,會(huì)使程序變得很復(fù)雜。
  • 不易調(diào)試:由于裝飾器模式涉及到多個(gè)對(duì)象的交互,調(diào)試可能會(huì)變得相對(duì)困難。特別是當(dāng)裝飾器鏈很長(zhǎng)時(shí),追蹤請(qǐng)求和響應(yīng)的路徑可能會(huì)變得復(fù)雜。

實(shí)例演示

圖示

雞腿堡應(yīng)用:
在這里插入圖片描述

代碼演示

package ZhuangShiMoShi;public abstract class Humburger {protected String name;public String getName() {return name;}public abstract double getPrice();}package ZhuangShiMoShi;public class ChickenBurger extends Humburger {public ChickenBurger(){name="雞腿堡";}public double getPrice(){return 10;}}package ZhuangShiMoShi;public abstract class Condiment extends Humburger {protected Humburger humburger;public abstract String getName();}package ZhuangShiMoShi;public class Chilli extends Condiment {public Humburger hum;public Chilli(Humburger hum) {this.hum = hum;}@Overridepublic String getName() {// TODO Auto-generated method stubreturn hum.getName() + " 加辣椒";}@Overridepublic double getPrice() {// TODO Auto-generated method stubreturn hum.getPrice();}}package ZhuangShiMoShi;public class Lettuce extends Condiment {public Humburger hum;public Lettuce(Humburger hum) {this.hum = hum;}@Overridepublic String getName() {// TODO Auto-generated method stubreturn hum.getName()+" 加生菜";}@Overridepublic double getPrice() {// TODO Auto-generated method stubreturn hum.getPrice()+1.5;}}

測(cè)試類:

package ZhuangShiMoShi;public class Test {public static void main(String[] args) {Humburger hum = new ChickenBurger();System.out.println(hum.getName() + " 價(jià)錢:" + hum.getPrice());Lettuce lettuce=new Lettuce(hum);System.out.println(lettuce.getName()+" 價(jià)錢:"+lettuce.getPrice());Chilli chilli1=new Chilli(hum);System.out.println(chilli1.getName()+" 價(jià)錢:"+chilli1.getPrice());Chilli chilli2=new Chilli(lettuce);System.out.println(chilli2.getName()+" 價(jià)錢:"+chilli2.getPrice());}}

運(yùn)行結(jié)果

在這里插入圖片描述

該代碼主體是雞腿堡,可以選擇通過添加生菜、醬、辣椒等等許多其他的配料,并根據(jù)選擇的配料計(jì)算相應(yīng)的價(jià)格。
博主用心寫,讀者點(diǎn)關(guān)注;互動(dòng)傳真情,知識(shí)不迷路

http://www.risenshineclean.com/news/55372.html

相關(guān)文章:

  • 什么官網(wǎng)比較容易做網(wǎng)站武漢seo優(yōu)化排名公司
  • wordpress評(píng)論刪除站點(diǎn)東莞百度推廣優(yōu)化
  • goodwork wordpressseo關(guān)鍵字優(yōu)化技巧
  • wordpress導(dǎo)入媒體失敗深圳優(yōu)化seo
  • 厚街做網(wǎng)站公司最基本的網(wǎng)站設(shè)計(jì)
  • 濟(jì)南住房和城鄉(xiāng)建設(shè)局網(wǎng)站自媒體怎么做
  • wordpress建站鏡像百度蜘蛛池自動(dòng)收錄seo
  • 變態(tài)sf網(wǎng)站網(wǎng)站搜索引擎優(yōu)化免費(fèi)
  • 國(guó)土局網(wǎng)站建設(shè)制度制作鏈接的小程序
  • 網(wǎng)頁制作教學(xué)天津seo顧問
  • 河北高端網(wǎng)站設(shè)計(jì)河北seo推廣
  • 德州做網(wǎng)站公司2023新聞熱點(diǎn)事件
  • wordpress 無法創(chuàng)建目錄 linux廣告開戶南京seo
  • 如何做網(wǎng)站不被坑新聞?lì)^條最新消息今天發(fā)布
  • 做十個(gè)網(wǎng)站企業(yè)網(wǎng)站如何優(yōu)化
  • 網(wǎng)站建設(shè)端口品牌推廣專員
  • 可以做網(wǎng)絡(luò)兼職的網(wǎng)站百度搜索關(guān)鍵詞排行榜
  • 301的網(wǎng)站用什么來做論壇推廣網(wǎng)站
  • php網(wǎng)頁制作工具一鍵優(yōu)化大師
  • 虛擬空間做網(wǎng)站電商運(yùn)營(yíng)怎么自學(xué)
  • 傳媒公司網(wǎng)站建設(shè)方案百度關(guān)鍵詞排名靠前
  • 武漢網(wǎng)站建設(shè)培訓(xùn)專業(yè)推廣公司
  • 武漢市網(wǎng)站設(shè)計(jì)百度醫(yī)生
  • 中國(guó)百強(qiáng)城市榜單湖南網(wǎng)絡(luò)優(yōu)化大師
  • 深圳網(wǎng)站建設(shè)vr知識(shí)seo長(zhǎng)尾關(guān)鍵詞
  • 網(wǎng)站功能結(jié)構(gòu)圖 怎么做發(fā)布懸賞任務(wù)的推廣平臺(tái)
  • wordpress home url優(yōu)化落實(shí)防控措施
  • dw網(wǎng)站建設(shè)怎么放在網(wǎng)上百度收錄入口在哪里查詢
  • 免費(fèi)logo設(shè)計(jì)一鍵生成下載seo崗位有哪些
  • 網(wǎng)站建設(shè)平臺(tái)安全問題有哪些百度引擎入口