大战熟女丰满人妻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ù)文檔推薦 >>
主站蜘蛛池模板: 国产精品久久久久三级 | 久久噜噜久久久精品66 | 曰本一区二区三区 | 欧美 日本 | 精品久久久久久国产91 | 玖玖精品国产 | 日韩毛片在线免费观看 | 国产亚洲99影院 | 在线99| 久久免费精品视频在线观看 | 婷婷国产偷v国产偷v亚洲 | 午夜精品成年片色多多 | 乱色欧美videos黑人 | 亚洲欧美日韩国产综合久 | 国产99久久 | 国产乱码精品一区二区三上 | 日韩亚洲视频 | 2021国产精品自产拍在线 | 一本大道香蕉高清久久 | 国产第一区二区三区在线观看 | 国产深夜福利19禁在线播放 | 偷偷狠狠的日日2020 | 亚洲高清在线视频 | 国产亚洲欧美另类一区二区三区 | 黄色一级片免费网站 | 欧美日韩一级片在线观看 | 在线观看深夜观看网站免费 | 九九伊人网 | 99国产成人高清在线视频 | 可以免费观看的一级片 | 亚洲欧美综合图区官网 | 午夜视频福利在线观看 | 欧美性色欧美a在线观看 | 波多野结衣精品中文字幕 | 在线观看日本人免费视频色 | 丁香婷婷六月 | 伊人亚洲综合网 | 国产精品成人亚洲 | 色拍自拍亚洲综合在线 | 天天天天色 | 免费久久 |