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

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 詳解java裝飾模式(Decorator Pattern)

詳解java裝飾模式(Decorator Pattern)

2020-04-15 11:32碼農(nóng)教程 JAVA教程

這篇文章主要為大家詳細(xì)介紹了java裝飾模式Decorator Pattern,這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝,對(duì)裝飾器模式感興趣的小伙伴們可以參考一下

一、裝飾器模式(Decorator Pattern)

允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝。

這種模式創(chuàng)建了一個(gè)裝飾類,用來(lái)包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。

我們通過(guò)下面的實(shí)例來(lái)演示裝飾器模式的使用。其中,我們將把一個(gè)形狀裝飾上不同的顏色,同時(shí)又不改變形狀類。

二、實(shí)現(xiàn)
我們將創(chuàng)建一個(gè) Shape 接口和實(shí)現(xiàn)了 Shape 接口的實(shí)體類。然后我們創(chuàng)建一個(gè)實(shí)現(xiàn)了 Shape 接口的抽象裝飾類ShapeDecorator,并把 Shape 對(duì)象作為它的實(shí)例變量。

RedShapeDecorator 是實(shí)現(xiàn)了ShapeDecorator 的實(shí)體類。

DecoratorPatternDemo,我們的演示類使用 RedShapeDecorator 來(lái)裝飾 Shape 對(duì)象。

步驟 1
創(chuàng)建一個(gè)接口。

Shape.java

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

步驟 2
創(chuàng)建實(shí)現(xiàn)接口的實(shí)體類。

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
創(chuàng)建實(shí)現(xiàn)了 Shape 接口的抽象裝飾類。

ShapeDecorator.java

?
1
2
3
4
5
6
7
8
9
10
11
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 類的實(shí)體裝飾類。

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 來(lái)裝飾 Shape 對(duì)象。

DecoratorPatternDemo.java

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

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

希望本文所述對(duì)大家學(xué)習(xí)java程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
565
主站蜘蛛池模板: 亚洲男人天堂 | 欧美在线观看一区二区 | 日韩欧美二区 | 久久久久久久久久久蜜桃 | 久色| 欧美黄色片免费观看 | 免费在线成人网 | 午夜免费av | 国产精彩视频 | 中文字幕影视 | 欧美午夜精品久久久久久蜜 | 久久久久久免费精品 | 久久久久久国产一级毛片高清版 | 久久99视频 | 日本天天操 | 精品国偷自产在线 | 成人精品在线观看 | 国产一区二区精品在线观看 | 欧美日韩精品电影 | 欧州一区二区三区 | 亚洲免费国产 | 国产在线视频一区 | 日韩一区二区在线观看 | 久久久91精品国产一区二区三区 | 国产精品suv一区二区 | 黄色a视频 | 黄色国产 | 天堂欧美城网站网址 | 91精品国产91久久久 | 日韩一区二区在线观看 | 久久精品一区二区三区中文字幕 | 天天操操 | 99精品热视频 | 91麻豆精品国产91久久久久久久久 | 欧美久久免费 | 精品久久中文字幕 | 国产亚洲精品美女久久久久久久久久 | 国产欧美日韩 | 1000部精品久久久久久久久 | 国产精品久久久久久久午夜片 | 国产精品日产欧美久久久久 |