欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式

這篇文章主要講解了“怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式”吧!

創(chuàng)新互聯(lián)擁有十余年成都網(wǎng)站建設(shè)工作經(jīng)驗,為各大企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計服務(wù),對于網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、重慶APP開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名注冊等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項目的能力。

模式定義

裝飾者模式屬于結(jié)構(gòu)型設(shè)計模式,首先我們先了解下裝飾者模式的定義。

In object-oriented programming, the decorator pattern is a design pattern that allows behavior to be added to an individual object, either statically or dynamically, without affecting the behavior of other objects from the same class. The decorator pattern is often useful for adhering to the Single Responsibility Principle, as it allows functionality to be divided between classes with unique areas of concern.

簡而言之, 裝飾者模式就是動態(tài)地為一個對象擴(kuò)展額外的功能,無論是動態(tài)還是靜態(tài),都不影響相同類的其他對象的行為, 這樣使得對象在運(yùn)行時更加靈活。

裝飾者實(shí)現(xiàn)的方式通常為組合或者繼承,可以讓客戶端根據(jù)需求進(jìn)行對應(yīng)的裝飾,來達(dá)到功能增加的目標(biāo)。為了簡化理解,裝飾者模式中裝飾一詞其實(shí)就是給原來的對象添加額外功能。

模式結(jié)構(gòu)

接下來我們看下裝飾者模式的層次結(jié)構(gòu)和主要角色.

  • Component 抽象組件,最原始,核心的對象,通常為接口或者抽象類.

  • ConcreteComponent 具體組件,對 Component 的實(shí)現(xiàn),也是需要裝飾的對象.

  • Decorator 裝飾者, 通常為抽象組件的抽象實(shí)現(xiàn), 它的屬性一定有私有變量指向 Component.

  • ConcreteDecorator 具體裝飾對象,是 Decorator 的具體實(shí)現(xiàn), 用于將原始,核心的方法裝飾增強(qiáng)的類.

模式實(shí)現(xiàn)

現(xiàn)在我們用喝咖啡的例子來實(shí)現(xiàn)下裝飾者模式,假設(shè)我們要買一杯咖啡,需要加糖,加奶,而什么都不加的咖啡與加奶,加糖的價格都不一樣,我們就要計算調(diào)制一杯加糖加奶的咖啡需要花費(fèi)多少錢。

這里咖啡就是我們的具體組件 ConcerateComponent, 奶和糖就是具體裝飾對象 ConcreteDecorator。 為了簡單,我們先創(chuàng)建一個Component接口類 Drink, 定義兩個方法用來獲得價格和描述:

怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式

接著,創(chuàng)建一個 ConcreteComponentCoffee 實(shí)現(xiàn) Drink 接口.

怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式

現(xiàn)在就需要一個抽象類 DrinkDecorator,用于擴(kuò)展實(shí)現(xiàn)功能增強(qiáng). 怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式

然后就是實(shí)現(xiàn)具體裝飾對象 MilkSugar. 怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式

最后客戶端實(shí)現(xiàn)制作咖啡的動作: 怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式

下圖為示例的類圖:

怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式

可以從上面例子看出,通過添加不同的材料,價格不同,并且描述信息也不一樣,并且添加順序可以動態(tài)改變,甚至不添加,讓對象變得十分靈活, 這就是裝飾者模式的精髓所在。

模式使用場景

裝飾者模式同樣大量應(yīng)用在 JDK 源碼中,我們經(jīng)常可以看到:

  • JDK 的 IO 操作類, 比如 java.io.InputStream 體系下 FilterInputStream 的一系列實(shí)現(xiàn)類,比如 BufferedInputStreamLineNumberInputStream,DataInpuStream。

  • java.util.Collections#synchronizedXXX()

裝飾者模式可以讓程序中對象在運(yùn)行時中進(jìn)行功能的增強(qiáng)和移除,并且采用更靈活的組合方式來進(jìn)行擴(kuò)展。

模式的得與失

優(yōu)點(diǎn):

  • 在不影響其他對象的情況下,動態(tài)為單個對象新增功能。

  • 裝飾類與被裝飾類 (ConcreteComponent) 相互獨(dú)立,互不耦合,易于擴(kuò)展。

  • 代替繼承方式的功能實(shí)現(xiàn),減少繼承類的存在。

缺點(diǎn):

  • 裝飾層次過多時會讓被裝飾的對象更復(fù)雜,不容易理解,比如使用 Java I/O 的 DataInputStream 對象讀取數(shù)據(jù)為 Java 基本類型值時會這樣使用:

    	DataInputStream is = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));

  • 程序中若有太多的裝飾類,理解和使用上略有難度。

感謝各位的閱讀,以上就是“怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

分享名稱:怎么實(shí)現(xiàn)web設(shè)計模式中的裝飾者模式
分享地址:http://www.aaarwkj.com/article28/goopcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、虛擬主機(jī)網(wǎng)站設(shè)計公司、App開發(fā)標(biāo)簽優(yōu)化、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
啊啊…嗯嗯…用力免费观看视频| 亚洲午夜精品毛片成人| 综合激情丁香久久狠狠| 色婷婷精品二区久久蜜臀av| 久久久久久亚洲av黄床| 亚洲黄色大片在线免费观看| 国产原创av剧情在线播放| 不卡视频一区中文字幕| 日本少妇三级网站大全| 亚洲性视频日韩性视频| 国产性生活大片免费看| 日韩少妇黄色在线观看| 日韩女同性一区二区三区| 国产精品视频一区二区三区网站| 成人深夜福利视频观看| 日韩欧美一区二区不卡在线| 成人三级中文字幕电影| 全部网站免费在线观看等| 中文字幕精品一区二区三| 久久久亚洲熟妇熟女一区二区| 精品国产美女主播在线| 天天操天天射夜夜撸| 日本一区二区免费视频| 婷婷精品国产欧美精品亚洲| 92午夜福利精品视频| 国产高清不卡一区二区| 欧美激情网页一区三区| 精品人妻一区两区三区| 一区二区不卡日韩av| 丰满少妇诱惑在线观看| 91亚洲精品国产一区| 欧美日韩一区中文字幕| 日韩在线一区二区三区电影| 黄片大全视频在线免费观看| 国产一区二区三区婷婷| 狠狠综爱五月天的婷婷| 丰满少妇亚洲中文字幕| 91成人精品永久在线观看| 日韩一级片精品视频在线| 一区二区三区日韩专区| 免费直接在线看亚洲黄色|