設(shè)計(jì)模式之裝飾者模式(23-1)

簡述:

  1. 學(xué)習(xí)裝飾者模式最大的體驗(yàn)是,對于傳統(tǒng)類的功能擴(kuò)展都是通過繼承來實(shí)現(xiàn)的,但是這種方式耦合度過高。
  2. 而裝飾者模式在不改變原有的業(yè)務(wù)類的前提下,更加靈活的擴(kuò)展業(yè)務(wù)。
  3. 類型-結(jié)構(gòu)性

具體代碼如下:

(1)普通業(yè)務(wù)實(shí)體類

public class SmallCake extends Cake{
    public String describe(){
        return "一個小蛋糕";
    }
    public int price(){
        return 10;
    }
}

(2)實(shí)體類的抽象

public abstract class Cake{
    public abstract String describe(){}
    public abstract int price(){}
}

(3)抽象裝飾類 (關(guān)鍵)

public abstract class DecoratorCake extend Cake{

    private Cake cake;
    
    public DecoratorCake(Cake cake){
        this.cake = cake;
    }
    public String describe(){
        return this.cake.describe();
    }
    public int price(){
        return this.cake.price;
    }
}

(4)具體裝飾類

public class AddChocolates extends DecoratorCake{
    public AddChocolates(Cake cake){
        super(cake);
    }
    public String describe(){
        return super.describe()+"加了巧克力";
    }
    public int price(){
        return super.price+10;
    }
}

(5)測試

public class Test{
    public static void main(String [] args){
        Cake cake = new SmallCake();
        cake = new AddChocolates();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 真誠的,TNANKS。 個人Github-23種設(shè)計(jì)模式案例鏈接 創(chuàng)建型模式 工廠模式 工廠模式(Factory ...
    水清_木秀閱讀 26,653評論 11 204
  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,098評論 1 15
  • 設(shè)計(jì)模式基本原則 開放-封閉原則(OCP),是說軟件實(shí)體(類、模塊、函數(shù)等等)應(yīng)該可以拓展,但是不可修改。開-閉原...
    西山薄涼閱讀 4,086評論 3 14
  • 鏈接:https://github.com/WiKi123/DesignPattern作者: WiKi123(gi...
    樹懶啊樹懶閱讀 3,860評論 0 2
  • 我遇見過四個姑娘,四個愿意把自己當(dāng)公主,卻不得不把生活過成苦難的姑娘。 第一個叫宇菲,昔我往矣,楊柳依依。今我...
    郝好吃面閱讀 923評論 5 4

友情鏈接更多精彩內(nèi)容