一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

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

java 裝飾模式(Decorator Pattern)詳解

2020-06-20 12:32lqh JAVA教程

這篇文章主要介紹了java 裝飾模式(Decorator Pattern)詳解的相關(guān)資料,需要的朋友可以參考下

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

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

我們通過下面的實(shí)例來演示裝飾器模式的使用。其中,我們將把一個(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 來裝飾 Shape 對(duì)象。

步驟 1

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

Shape.java

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

步驟 2

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

Rectangle.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Rectangle implements Shape {
 
 @Override
 public void draw() {
  System.out.println("Shape: Rectangle");
 }
}
Circle.java
 
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
12
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 來裝飾 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ì)本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久re视频精品538在线 | 99午夜 | 女明星放荡高h日常生活 | 深夜成人| tobu8中国在线观看免费视频 | www久久精品 | 欧美一区二区三区四区视频 | 99久久6er热免费精品 | 果冻传媒在线完整免费观 | 青春草在线观看视频 | chinese帅男gay野外性 | 艹b视频在线观看 | 免费观看成年人视频 | 久久国产36精品色熟妇 | 亚洲另类老妇videos | 强插美女 | 免费一级日本c片完整版 | 国产精品调教 | 日本道在线播放 | 日本高清二三四本2021 | 亚洲国产综合久久精品 | 猫咪免费人成网站在线观看入口 | 日本在线小视频 | 黄色大片免费网站 | 暖暖暖免费观看在线观看 | 美女林柏欣21p人体之仓之梦 | 91综合在线视频 | 精品亚洲午夜久久久久 | 四虎永久在线精品国产 | 美女脱了内裤打开腿让男人图片 | 色综合久久六月婷婷中文字幕 | 忘忧草在线社区WWW日本直播 | 91短视频在线免费观看 | 国产精品一区二区久久 | 国产99久久久国产精品成人 | 黄色大片三级 | 日本视频免费在线播放 | 久久伊人中文字幕有码 | 欧洲肥女大肥臀 | 本站只有精品 | 国产经典一区二区三区蜜芽 |