大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 裝飾者設(shè)計(jì)模式的介紹

裝飾者設(shè)計(jì)模式的介紹

更新時(shí)間:2022-12-09 10:00:38 來源:動(dòng)力節(jié)點(diǎn) 瀏覽894次

裝飾器模式允許用戶在不改變其結(jié)構(gòu)的情況下向現(xiàn)有對(duì)象添加新功能。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)模式,因?yàn)檫@種模式充當(dāng)現(xiàn)有類的包裝器。

此模式創(chuàng)建了一個(gè)裝飾器類,它包裝了原始類并提供了保持類方法簽名完整的附加功能。

我們通過以下示例演示裝飾器模式的使用,在該示例中我們將使用某種顏色裝飾形狀而不更改形狀類。

執(zhí)行

我們將創(chuàng)建一個(gè)Shape接口和實(shí)現(xiàn)Shape接口的具體類。然后我們將創(chuàng)建一個(gè)抽象裝飾器類ShapeDecorator實(shí)現(xiàn)Shape接口并將Shape對(duì)象作為其實(shí)例變量。

RedShapeDecorator是實(shí)現(xiàn)ShapeDecorator的具體類。

DecoratorPatternDemo,我們的演示類將使用RedShapeDecorator來裝飾Shape對(duì)象。

步驟1

創(chuàng)建一個(gè)接口。

形狀.java

public interface Shape {
   void draw();
}

第2步

創(chuàng)建實(shí)現(xiàn)相同接口的具體類。

矩形.java

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

圈子.java

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

步驟 3

創(chuàng)建實(shí)現(xiàn)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步

創(chuàng)建擴(kuò)展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對(duì)象。

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

驗(yàn)證輸出。

Circle with normal border
Shape: Circle
Circle of red border
Shape: Circle
Border Color: Red
Rectangle of red border
Shape: Rectangle
Border Color: Red

 

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 玖玖玖精品视频免费播放 | 国产真实伦视频在线视频 | 一区在线免费观看 | 在线观看日韩欧美 | 91精品免费在线观看 | 综合在线播放 | 成人在线不卡 | 伊人影院久久 | 久久亚洲精品玖玖玖玖 | 97色伦图片97色伦图影院久久 | 调教师鞭打总裁奴男男 | 狠狠色噜噜狠狠狠狠色综合久 | a毛片在线还看免费网站 | 四虎地址8848jia | 亚洲久草在线 | 国产精品午夜高清在线观看 | 欧美一级毛片免费大片 | 狠狠干夜夜操 | 色爱b| 国产精品视频在线免费观看 | 亚洲一区二区精品推荐 | 国产高清一级毛片在线不卡 | 亚洲va在线va天堂成人 | 99精品国产高清一区二区 | 亚洲精品国产字幕久久不卡 | 日本综合视频 | 九九99国产精品视频 | 国产91精品高清一区二区三区 | 国产精品国产国产aⅴ | 99热热| 欧美性xxx久久 | 国产日韩中文字幕 | 亚洲精品乱码久久久久久 | 免费福利视频在线观看 | 亚洲香蕉在线观看 | 色综合色狠狠天天综合色 | 天天操天天爽天天射 | 九色九色九色在线综合888 | 欧美三级aaa | 久久伊人一区二区三区四区 | 亚洲h在线观看 |