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

java 裝飾模式(Decorator Pattern)詳解

 更新時(shí)間:2016年10月02日 10:17:00   投稿:lqh  
這篇文章主要介紹了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


public interface Shape {
 void draw();
}
 

步驟 2

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

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)建實(shí)現(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)建擴(kuò)展自 ShapeDecorator 類的實(shí)體裝飾類。

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 對(duì)象。

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

驗(yàn)證輸出。

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ì)本站的支持!

相關(guān)文章

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

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

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

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

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

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

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

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

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

    java實(shí)現(xiàn)網(wǎng)上購(gòu)物車程序

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

    Spring Boot集成Kafka的示例代碼

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

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

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

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

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

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

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

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

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

最新評(píng)論