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

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

裝飾者設計模式的介紹

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

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

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

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

執行

我們將創建一個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

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美日韩免费一区二区在线观看 | 日日噜噜夜夜狠狠视频欧美人 | 国产视频福利在线 | 亚洲va欧美ⅴa国产va影院 | 日本护士xxxxx18.19 | 免费看国产精品麻豆 | 男女啪啪猛烈到合不拢腿小说网 | 一区二区三区四区在线视频 | 精品国产人成亚洲区 | 开心婷婷激情五月 | 午夜视频高清在线aaa | 日本福利网址 | 未满十八18勿进黄网站免费看 | 婷婷久久五月天 | 亚洲天天做日日做天天看2018 | 视频精品一区 | 免费看一级片 | 中文字幕一区二区在线观看 | 欧美日韩免费 | 国产青草视频免费观看97 | 免费777my性欧美另类 | 天天色天天干天天 | 小嫩嫩精品导航 | 性刺激欧美三级在线观看 | 在线 | 一区二区三区四区 | 婷婷狠狠干 | 亚洲日本在线看片 | 亚洲成成熟老妇女 | 久在线视频 | 久久性视频 | 热re66久久精品国产99re | 国产黄色免费观看 | 亚洲精品午夜国产va久久成人 | 2o2o天天看夜夜看狠狠看 | 精品偷国情拍在线视频 | 日本精品久久 | 免费网站成人亚洲 | 天天摸夜添狠狠添高 | 久久久久国产精品免费免费 | 欧美人视频 | 一级大黄美女免费播放 |