亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java 裝飾模式(Decorator Pattern)詳解

 更新時間:2016年10月02日 10:17:00   投稿:lqh  
這篇文章主要介紹了java 裝飾模式(Decorator Pattern)詳解的相關(guān)資料,需要的朋友可以參考下

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

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

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

實現(xiàn)

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

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

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

步驟 1

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

Shape.java


public interface Shape {
 void draw();
}
 

步驟 2

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

Rectangle.java


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)建實現(xiàn)了 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

創(chuàng)建擴展自 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



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

相關(guān)文章

  • springboot加載命令行參數(shù)ApplicationArguments的實現(xiàn)

    springboot加載命令行參數(shù)ApplicationArguments的實現(xiàn)

    本文主要介紹了springboot加載命令行參數(shù)ApplicationArguments的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • java中常見的6種線程池示例詳解

    java中常見的6種線程池示例詳解

    這篇文章主要介紹了java中常見的6種線程池示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java多線程常見案例分析線程池與單例模式及阻塞隊列

    Java多線程常見案例分析線程池與單例模式及阻塞隊列

    這篇文章主要介紹了多線程的常見案例,線程池(重點)、單例模式、阻塞隊列,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Json 自定義使用函數(shù)的簡單實例

    Json 自定義使用函數(shù)的簡單實例

    下面小編就為大家?guī)硪黄狫son 自定義使用函數(shù)的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • java實現(xiàn)網(wǎng)上購物車程序

    java實現(xiàn)網(wǎng)上購物車程序

    這篇文章主要介紹了java實現(xiàn)網(wǎng)上購物車程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Spring Boot集成Kafka的示例代碼

    Spring Boot集成Kafka的示例代碼

    本篇文章主要介紹了Spring Boot集成Kafka的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java多線程產(chǎn)生死鎖的必要條件

    Java多線程產(chǎn)生死鎖的必要條件

    今天小編就為大家分享一篇關(guān)于Java多線程產(chǎn)生死鎖的必要條件,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring Boot整合Spring Security簡單實現(xiàn)登入登出從零搭建教程

    Spring Boot整合Spring Security簡單實現(xiàn)登入登出從零搭建教程

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合Spring Security簡單實現(xiàn)登入登出從零搭建的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-09-09
  • SpringSecurity整合springBoot、redis實現(xiàn)登錄互踢功能

    SpringSecurity整合springBoot、redis實現(xiàn)登錄互踢功能

    這篇文章主要介紹了SpringSecurity整合springBoot、redis實現(xiàn)登錄互踢,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05
  • 如何動態(tài)修改JavaBean中注解的參數(shù)值

    如何動態(tài)修改JavaBean中注解的參數(shù)值

    這篇文章主要介紹了如何動態(tài)修改JavaBean中注解的參數(shù)值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論