黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 裝飾者設計模式的介紹

裝飾者設計模式的介紹

更新時間:2022-12-09 10:00:38 來源:動力節點 瀏覽1014次

裝飾器模式允許用戶在不改變其結構的情況下向現有對象添加新功能。這種類型的設計模式屬于結構模式,因為這種模式充當現有類的包裝器。

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

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

執行

我們將創建一個Shape接口和實現Shape接口的具體類。然后我們將創建一個抽象裝飾器類ShapeDecorator實現Shape接口并將Shape對象作為其實例變量。

RedShapeDecorator是實現ShapeDecorator的具體類。

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

步驟1

創建一個接口。

形狀.java

public interface Shape {
   void draw();
}

第2步

創建實現相同接口的具體類。

矩形.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

創建實現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 border
Shape: Circle
Circle of red border
Shape: Circle
Border Color: Red
Rectangle of red border
Shape: Rectangle
Border Color: Red

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 在线亚洲成人 | 国产成人久久综合热 | 精品偷国情拍在线视频 | 无码专区aaaaaa免费视频 | 你懂的在线观看 | 一个人在线观看的免费视频www | 久久精品视频亚洲 | 99久久综合狠狠综合久久 | 免费一级欧美大片在线观看 | 被窝国产理论一二三影院 | 黄网免费看 | 老司机深夜影院入口aaaa | 亚洲精品手机在线 | 欧美日韩一区二区亚洲 | 日本伊人精品一区二区三区 | 国产精品亚洲日日摸夜夜添 | 精品欧美一区二区三区在线 | 成人在线网 | 国产成人一区二区三区 | 男女边摸边吃奶边做视频在线 | 天天操天天草 | 天天躁狠狠躁夜夜躁 | 免费观看成人www精品视频在线 | 欧美激情a∨在线视频播放 欧美激情二区 | 高清一区二区亚洲欧美日韩 | 中文字幕欧美日韩高清 | 波多野结衣免费在线视频 | 天天看天天摸色天天综合网 | 欧美日韩在线免费 | 成人伦理在线观看 | www.夜夜操.com| 欧美黄区| 国内成人免费视频 | 亚洲伦理影院 | 亚洲高清免费在线观看 | 欧美成a人免费观看 | 日韩欧美亚洲 | 亚洲激情视频在线播放 | 亚洲日本中文字幕 | 中文字幕一精品亚洲无线一区 | 你懂的 在线视频 |