亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

簡述裝飾器模式

2019-11-11 05:13:29
字體:
來源:轉載
供稿:網友

裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有的類的一個包裝。

這種模式創建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。

介紹

意圖:動態地給一個對象添加一些額外的職責。就增加功能來說,裝飾器模式相比生成子類更為靈活。

主要解決:一般的,我們為了擴展一個類經常使用繼承方式實現,由于繼承為類引入靜態特征,并且隨著擴展功能的增多,子類會很膨脹。

何時使用:在不想增加很多子類的情況下擴展類。

如何解決:將具體功能職責劃分,同時繼承裝飾者模式。

關鍵代碼: 1、Component 類充當抽象角色,不應該具體實現。 2、修飾類引用和繼承 Component 類,具體擴展類重寫父類方法。

應用實例: 1、孫悟空有 72 變,當他變成"廟宇"后,他的根本還是一只猴子,但是他又有了廟宇的功能。 2、不論一幅畫有沒有畫框都可以掛在墻上,但是通常都是有畫框的,并且實際上是畫框被掛在墻上。在掛在墻上之前,畫可以被蒙上玻璃,裝到框子里;這時畫、玻璃和畫框形成了一個物體。

優點:裝飾類和被裝飾類可以獨立發展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態擴展一個實現類的功能。

缺點:多層裝飾比較復雜。

使用場景: 1、擴展一個類的功能。 2、動態增加功能,動態撤銷。

注意事項:可代替繼承。

我們通過下面的實例來演示裝飾器模式的用法。其中,我們將把一個形狀裝飾上不同的顏色,同時又不改變形狀類。

實現

我們將創建一個 Shape 接口和實現了 Shape 接口的實體類。

然后我們創建一個實現了 Shape 接口的抽象裝飾類ShapeDecorator,并把 Shape 對象作為它的實例變量。

RedShapeDecorator 是實現了 ShapeDecorator 的實體類。

我們的演示類DecoratorPatternDemo使用 RedShapeDecorator 來裝飾 Shape 對象。

裝飾器模式的 UML 圖

步驟 1

創建一個接口。

Shape.java

public interface Shape {   void draw();}

步驟 2

創建實現接口的實體類。

Rectangle.java

public class Rectangle implements Shape {   @Override   public void draw() {      System.out.PRintln("Shape: Rectangle");   }}

Circle.java

public class Circle implements Shape {   @Override   public void draw() {      System.out.println("Shape: Circle");   }}

步驟 3

創建實現了 Shape 接口的抽象裝飾類。

ShapeDecorator.java

public abstract class ShapeDecorator implements Shape {   protected Shape decoratedShape;   public ShapeDecorator(Shape decoratedShape){      this.decoratedShape = decoratedShape;   }   public void draw(){      decoratedShape.draw();   }	}

步驟 4

創建擴展了 ShapeDecorator 類的實體裝飾類。

RedShapeDecorator.java

public class RedShapeDecorator extends ShapeDecorator {   public RedShapeDecorator(Shape decoratedShape) {      super(decoratedShape);		   }   @Override   public void draw() {      decoratedShape.draw();	             setRedBorder(decoratedShape);   }   private void setRedBorder(Shape decoratedShape){      System.out.println("Border Color: Red");   }}

步驟 5

使用 RedShapeDecorator 來裝飾 Shape 對象。

DecoratorPatternDemo.java

public class DecoratorPatternDemo {   public static void main(String[] args) {      Shape circle = new Circle();      Shape redCircle = new RedShapeDecorator(new Circle());      Shape redRectangle = new RedShapeDecorator(new Rectangle());      System.out.println("Circle with normal border");      circle.draw();      System.out.println("/nCircle of red border");      redCircle.draw();      System.out.println("/nRectangle of red border");      redRectangle.draw();   }}

步驟 6

驗證輸出。

Circle with normal borderShape: CircleCircle of red borderShape: CircleBorder Color: RedRectangle of red borderShape: RectangleBorder Color: Red
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色樱桃影院亚洲精品影院| 久久久久亚洲精品| 萌白酱国产一区二区| 中文字幕日韩电影| 韩剧1988免费观看全集| 亚洲国产精品专区久久| 亚洲一区www| 97碰碰碰免费色视频| 精品久久久久久久久国产字幕| 日韩在线视频免费观看| 欧美午夜精品久久久久久浪潮| 成人免费在线视频网址| 精品中文字幕在线观看| 国产精品大片wwwwww| 国产视频久久久久久久| 日韩免费观看在线观看| 日韩欧美中文字幕在线观看| 97在线日本国产| 成人在线视频福利| 色综合久久中文字幕综合网小说| 中文字幕亚洲一区在线观看| 亚洲第一网站男人都懂| 北条麻妃在线一区二区| 一色桃子一区二区| 亚洲a成v人在线观看| 国产精品爽爽爽爽爽爽在线观看| 91精品国产综合久久久久久蜜臀| 久久精品久久久久久| 久久伊人精品视频| 一区二区福利视频| 日韩国产在线看| 国产一区二区三区网站| 91精品久久久久久久久久另类| 国产精品一香蕉国产线看观看| 日韩精品一区二区视频| 亚洲欧洲高清在线| 久久久成人av| 国产精品扒开腿爽爽爽视频| 欧美老肥婆性猛交视频| 亚洲高清一区二| 欧美激情亚洲综合一区| 北条麻妃一区二区在线观看| 国产成人精品在线视频| 国内自拍欧美激情| 性色av一区二区三区在线观看| 97精品国产97久久久久久免费| 精品人伦一区二区三区蜜桃免费| 国产成人精品视频在线观看| 亚洲国产另类 国产精品国产免费| 日韩免费在线电影| 久久免费视频观看| 久久久久久久久久久久久久久久久久av| 欧美性videos高清精品| 九九热最新视频//这里只有精品| 亚洲欧美日韩精品| 中文字幕在线观看亚洲| 91亚洲国产精品| 色爱av美腿丝袜综合粉嫩av| 亚洲色图av在线| 亚洲欧美中文字幕在线一区| 久久国产精品久久国产精品| 欧美日韩成人在线播放| 97视频在线观看播放| 九色成人免费视频| 97视频在线播放| 亚洲黄一区二区| 97视频在线观看亚洲| 亚洲色图狂野欧美| 中文字幕av一区二区三区谷原希美| 91精品国产高清久久久久久久久| 成人精品一区二区三区电影免费| 欧美日韩在线免费观看| 欧美二区在线播放| 欧美日韩成人在线播放| 久久精品视频在线播放| 午夜精品一区二区三区视频免费看| 国产精品一区二区三区久久| 国产精品一区二区在线| 久久精品夜夜夜夜夜久久| 日韩在线视频导航| 亚洲国产成人精品久久久国产成人一区| 亚洲精品狠狠操| 欧美亚洲国产成人精品| 国产在线a不卡| 亚洲日韩中文字幕| 国产精品无码专区在线观看| 国产精品一区二区三区久久| 欧美丰满少妇xxxxx做受| 欧美一级bbbbb性bbbb喷潮片| 久久免费视频网站| 亚洲人成自拍网站| 国产精品一区二区性色av| 久久综合久久八八| 欧美怡红院视频一区二区三区| 亚洲人成在线观看| 亚洲精品电影网在线观看| 国产一区私人高清影院| 欧美成人午夜免费视在线看片| 中文国产成人精品久久一| 亚洲精品99久久久久| 91久久嫩草影院一区二区| 国产免费一区二区三区在线能观看| 国内精品久久影院| 精品亚洲夜色av98在线观看| 久久久人成影片一区二区三区观看| 欧美精品制服第一页| 97精品久久久| 国产91在线播放| 日韩有码片在线观看| 久久精品国产亚洲| 欧美高清理论片| 91大神福利视频在线| 亚洲成人教育av| 国产精品jvid在线观看蜜臀| 成人精品在线视频| 国产成人高清激情视频在线观看| 欧美国产日韩精品| 欧美亚洲一级片| 2019中文字幕在线免费观看| 青青草一区二区| 日韩精品中文字幕在线| 国产精品扒开腿爽爽爽视频| 欧美激情喷水视频| 中文字幕亚洲无线码在线一区| 久久久www成人免费精品张筱雨| 国产日本欧美在线观看| 欧美日韩久久久久| 日韩免费av一区二区| 国产精品美女视频网站| 亚洲成人黄色在线观看| 久久综合久中文字幕青草| 91精品中国老女人| 亚洲黄色有码视频| 青青草99啪国产免费| 精品国内自产拍在线观看| 国产精品视频久| 日韩经典中文字幕| 欧美精品成人91久久久久久久| 日本高清视频一区| 欧美一级高清免费播放| 成人黄在线观看| 欧美成人激情视频免费观看| 国产精品igao视频| 麻豆国产精品va在线观看不卡| 久久久久久亚洲精品中文字幕| 亚洲电影免费观看高清完整版在线观看| 国内精品伊人久久| 欧美性受xxxx黑人猛交| 欧美日韩第一视频| www.亚洲人.com| 国产视频精品免费播放| 亚洲激情在线观看| 国产精品一区二区三区毛片淫片| 亚洲伊人第一页| 宅男66日本亚洲欧美视频| 国产精品视频网址| 亚洲精品黄网在线观看| 日韩亚洲成人av在线| 一区二区三区久久精品| 丰满岳妇乱一区二区三区| 热久久这里只有| 在线观看国产精品日韩av| 精品久久久久久久久久久久久| 丝袜一区二区三区|