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

專注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

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 五月婷婷在线视频观看 | 国产三级在线 | 日韩小片 | 看全色黄大色大片免费久久怂 | 国内精品九一在线播放 | 无遮羞肉动漫在线观看免费 | 日韩欧美一区二区久久黑人 | 又www又黄又爽啪啪网站 | 国产精品香蕉成人网在线观看 | 九九99视频在线观看视频观看 | 日本午夜影院 | 男女毛片 | 99ri在线精品视频在线播放 | 翁熄性放纵苏玥完整小说 | 国产免费不卡 | 99在线观看国产 | 视频一区二区三区在线观看 | 国产在线精品成人一区二区三区 | 日本不卡视频在线播放 | 欧美日韩在线成人看片a | 日韩伦理片在线观看光棍影院 | 草草线在成人免费视频 | 青草视频免费观看 | 欧美亚洲国产激情一区二区 | 日韩欧美一区二区三区中文精品 | 天天摸夜夜添久久精品麻豆 | 日本免费一区二区三区看片 | a一级免费视频 | 亚洲三级黄 | 中文字幕欧美日韩一 | 九九久久国产精品 | 日韩成人在线观看 | 中文国产成人精品久久久 | 草草视频在线播放 | 成年人网站免费观看 | 国内精品视频在线播放一区 | 成年性生交大片免费看 | 亚洲国产午夜 | 下面一进一出好爽视频 | 亚洲伦| 亚洲国产一区二区三区最新 |