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

Java設計模式以虹貓藍兔的故事講解裝飾器模式

 更新時間:2022年04月21日 16:47:10   作者:桃花鍵神  
裝飾器模式又名包裝(Wrapper)模式。裝飾器模式以對客戶端透明的方式拓展對象的功能,是繼承關系的一種替代方案,本篇文章以虹貓藍兔生動形象的為你帶來詳細講解

模式: 裝飾器模式

案例: 黑小虎抓住了七俠,把虹貓烤了

什么是裝飾器模式

裝飾器(Decorator)模式的定義: 指在不改變現有對象結構的情況下,動態(tài)地給該對象增加一些職責(即增加其額外功能)的模式,它屬于對象結構型模式。

優(yōu)點

1、裝飾器是繼承的有力補充,比繼承靈活,在不改變原有對象的情況下,動態(tài)的給一個對象擴展功能,即插即用

2、通過使用不用裝飾類及這些裝飾類的排列組合,可以實現不同效果 3、裝飾器模式完全遵守開閉原則

缺點

裝飾器模式會增加許多子類,過度使用會增加程序得復雜性。

知識點

通常情況下,擴展一個類的功能會使用繼承方式來實現。但繼承具有靜態(tài)特征,耦合度高,并且隨著擴展功能的增多,子類會很膨脹。如果使用組合關系來創(chuàng)建一個包裝對象(即裝飾對象)來包裹真實對象,并在保持真實對象的類結構不變的前提下,為其提供額外的功能,這就是裝飾器模式的目標。下面來分析其基本結構和實現方法。

裝飾器模式實現

案例: 黑小虎抓住了七俠,還要把虹貓烤了

抽象構件(Component)角色:七俠

具體構件(ConcreteComponent)角色:虹貓

抽象裝飾(Decorator)角色:加料

具體裝飾(ConcreteDecorator)角色:加鹽、加孜然。

七俠

七俠接口,聲明一個燒烤抽象方法

public interface Qi {
    void show();
}

虹貓

虹貓類實現七俠接口,并且實現了烤虹貓的方法

public class Hong implements Qi {
    @Override
    public void show() {
        System.out.println("燒烤一個虹貓");
    }
}

加料

這就是一個抽象的裝飾器,實現了七俠接口,聲明一個七俠屬性,用來調用七俠的燒烤方法

public class JiaLiao implements Qi {
    private Qi qi;
    JiaLiao() {
    }
    JiaLiao(Qi component) {
        this.qi = component;
    }
    @Override
    public void show() {
        qi.show();
    }
}

加鹽

繼承了抽象類,并且重寫了燒烤方法,加了一個鹽

public class Yan extends JiaLiao {
    private Qi qi;
    Yan() {
    }
    Yan(Qi qi) {
        super(qi);
    }
    @Override
    public void show() {
        super.show();
        add();
    }
    public void add() {
        System.out.println("加鹽");
    }
}

加孜然

繼承了抽象類,并且重寫了燒烤方法,加了一個孜然

public class ZiRan extends JiaLiao {
    private Qi qi;
    ZiRan() {
    }
    ZiRan(Qi qi) {
        super(qi);
    }
    @Override
    public void show() {
        super.show();
        add();
    }
    public void add() {
        System.out.println("加孜然");
    }
}

測試

new一個虹貓,把它烤了。

加點鹽

加點鹽和孜然

public class Demo {
    public static void main(String[] args) {
        Qi qi = new Hong();
        qi.show();
        System.out.println();
        Qi qi1 = new Yan(qi);
        qi1.show();
        System.out.println();
        Qi qi2 = new ZiRan(qi1);
        qi2.show();
    }
}

總結

不僅可以燒烤虹貓也可以燒烤其他七俠,只需要加一個類去實現七俠接口就行。

而且加鹽或者加孜然這些東西都不會改變虹貓的原本肉質。

到此這篇關于Java設計模式以虹貓藍兔的故事講解裝飾器模式的文章就介紹到這了,更多相關Java裝飾器模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中Iterator(迭代器)的用法詳解

    Java中Iterator(迭代器)的用法詳解

    Java迭代器(Iterator)是?Java?集合框架中的一種機制,它提供了一種在不暴露集合內部實現的情況下遍歷集合元素的方法。本文主要介紹了它的使用方法,希望對大家有所幫助
    2023-05-05
  • Springboot如何使用filter對request body參數進行校驗

    Springboot如何使用filter對request body參數進行校驗

    這篇文章主要介紹了Springboot如何使用filter對request body參數進行校驗,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Hibernate延遲加載原理與實現方法

    Hibernate延遲加載原理與實現方法

    這篇文章主要介紹了Hibernate延遲加載原理與實現方法,較為詳細的分析了Hibernate延遲加載的概念,原理與相關實現技巧,需要的朋友可以參考下
    2016-03-03
  • Java中的同步與異步詳細介紹

    Java中的同步與異步詳細介紹

    這篇文章主要介紹了Java中的同步與異步詳細介紹,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • redis實現隊列的阻塞、延時、發(fā)布和訂閱

    redis實現隊列的阻塞、延時、發(fā)布和訂閱

    本文主要介紹了redis實現隊列的阻塞、延時、發(fā)布和訂閱,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Java實現圖片比率縮放

    Java實現圖片比率縮放

    這篇文章主要為大家詳細介紹了Java通過Thumbnails實現圖片比率縮放,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • redis之基于SpringBoot實現Redis stream實時流事件處理方式

    redis之基于SpringBoot實現Redis stream實時流事件處理方式

    這篇文章主要介紹了redis之基于SpringBoot實現Redis stream實時流事件處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 詳解spring-boot actuator(監(jiān)控)配置和使用

    詳解spring-boot actuator(監(jiān)控)配置和使用

    本篇文章主要介紹了spring-boot actuator(監(jiān)控)配置和使用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java8 HashMap遍歷方式性能探討

    Java8 HashMap遍歷方式性能探討

    JDK8之前,可以使用keySet或者entrySet來遍歷HashMap,JDK8中引入了map.foreach來進行遍歷
    2021-09-09
  • Java多線程 中斷機制及實例詳解

    Java多線程 中斷機制及實例詳解

    這篇文章主要介紹了Java多線程 中斷機制及實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論