国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java 裝飾模式(Decorator Pattern)詳解及實例代碼

java 裝飾模式(Decorator Pattern)詳解及實例代碼

2020-06-21 15:07Java教程網 JAVA教程

裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有的類的一個包裝

裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬于結構型模式,它是作為現有的類的一個包裝。

這種模式創建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。

我們通過下面的實例來演示裝飾器模式的使用。其中,我們將把一個形狀裝飾上不同的顏色,同時又不改變形狀類。

實現

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

RedShapeDecorator 是實現了 ShapeDecorator 的實體類。

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

 步驟 1

創建一個接口。

Shape.java

?
1
2
3
4
public interface Shape {
  void draw();
}

步驟 2

創建實現接口的實體類。

Rectangle.java

?
1
2
3
4
5
6
7
public class Rectangle implements Shape {
 
  @Override
  public void draw() {
   System.out.println("Shape: Rectangle");
  }
}

Circle.java

?
1
2
3
4
5
6
7
public class Circle implements Shape {
 
  @Override
  public void draw() {
   System.out.println("Shape: Circle");
  }
}

 步驟 3

創建實現了 Shape 接口的抽象裝飾類。

ShapeDecorator.java

?
1
2
3
4
5
6
7
8
9
10
11
12
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

驗證輸出。

?
1
2
3
4
5
6
7
8
9
10
11
Circle with normal border
Shape: Circle
 
Circle of red border
Shape: Circle
Border Color: Red
 
Rectangle of red border
Shape: Rectangle
Border Color: Red

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久婷婷国产精品综合 | 欧美精三区欧美精三区 | 一区二区三区精品视频 | 欧美成人h版在线观看 | 这里只有精品在线视频观看 | 国产一区二区三区在线免费看 | 久久精选 | 亚洲国产一区二区三区日本久久久 | 久久xxx| 国产一级久久久久 | 国产精品jizz在线观看麻豆 | 免费不卡视频 | 久久伊人久久 | 日韩av中文字幕在线播放 | 99精品免费 | 91视频专区 | 亚州精品天堂中文字幕 | 中文日韩在线 | 国产成人精品免高潮在线观看 | 在线观看不卡 | 毛片黄片| 国产日韩欧美一区 | 青青久草 | 国产一区二区精品 | 国内自拍视频在线观看 | 91久久精品日日躁夜夜躁国产 | 久久久久久国产精品mv | 国产成人免费视频网站视频社区 | 精品国产一区二区三区免费 | 91av导航| 韩国一区二区视频 | 香蕉成人啪国产精品视频综合网 | 欧美日韩高清一区 | 色永久| 懂色av中文一区二区三区天美 | 久草中文在线 | 一区二区蜜桃 | 日本一区二区电影 | 午夜精品久久久 | 国产黄色三级 | 国产99精品视频 |