中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java結構型設計模式之裝飾模式怎么實現

發布時間:2023-03-31 14:08:01 來源:億速云 閱讀:118 作者:iii 欄目:開發技術

這篇文章主要介紹“Java結構型設計模式之裝飾模式怎么實現”,在日常操作中,相信很多人在Java結構型設計模式之裝飾模式怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java結構型設計模式之裝飾模式怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

介紹

意圖:動態地給一個對象添加一些額外的職責。就增加功能來說,裝飾模式相比生成子類更靈活。

主要解決:我們擴展一個類常使用繼承方式實現,由于繼承為類引入靜態特征,并且隨著擴展功能的增多,子類會越來越膨脹。

如何使用:在不想增加很多子類的情況下擴展。

如何解決:將具體功能職責劃分,同時繼承裝飾者模式。

關鍵代碼:

1. Component 類充當抽象角色,不應該具體實現。

2. 修飾類引用合繼承 Component 類,具體擴展類重寫父類方法。

使用場景:

1. 擴展一個類的功能。

2. 動態增加功能,動態撤銷。

實現

創建一個 Shape 接口合實現了 Shape 接口的實體類。然后再創建一個實現了 Shape 接口的抽象裝飾類 ShapeDecorator,并把 Shape 對象作為它的實例變量。RedShapeDecorator 是實現了 ShapeDecorator 的實體類。DecoratorPatternDemo 類使用 RedShapeDecorator 來裝飾 Shape 對象。

Java結構型設計模式之裝飾模式怎么實現

步驟1:

public interface Shape{
    void draw();
}

步驟2:

public class Rectangle implements Shape{
    @Override
    public ovid draw(){
        System.out.println("draw Rectangle");
    }
}
public class Cricle implements Shape{
    @Override
    public ovid draw(){
        System.out.println("draw Circle");
    }
}

步驟3:

public abstract class ShapeDecorator implements Shape{
    private Shape shape; // 持有一個 Shape 對象
    public ShapeDecorator(Shape shape){
        this.shape = shape;
    }
    public void draw(){
        shape.draw();// TODO 根據傳進來的具體 Shape 對象,調用對應的 draw 方法
    }
}

步驟4:

public class RedShapeDecorator extends ShapeDecorator{
    public RedShapeDecorator(Shape shape){
        super(shape);
    }
    @Override
    public void draw(){
        shape.draw();
        setRedBorder(shape);
    }
    public void setRedBorder(Shape shape){
        System.out.println("Border Color: Red");
    }
}

步驟5

public class DecoratorPatterndDemo{
    public static void main(String args[]){
        //TODO 面向抽象層編程
        // 普通的Circle
        Shape circle = new Circle();
        System.out.println("Circle with normal Border");        
        circle.darw();
        // 紅色邊界的 Circle
        ShapeDecorator redCircle = new RedShapeDecorator(new Circle); 
        System.out.println("Circle of red Border");
        redCircle.draw();
        // 紅色邊界的 Rectangle
        ShapeDecorator redRectangle = new RedShapeDecorator(new Rectangel):
        System.out.println("Rectangle of red Border");
        redRectangle.draw();
    }
}

優缺點

優點:裝飾類和被裝飾類可以獨立發展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態擴展一個實現類的功能。

缺點:多層裝飾比較復雜。

到此,關于“Java結構型設計模式之裝飾模式怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青龙| 阜城县| 商都县| 平泉县| 松原市| 手游| 青神县| 肇庆市| 南汇区| 陇川县| 宁德市| 正宁县| 嘉荫县| 昌邑市| 辽中县| 肥城市| 湘乡市| 通海县| 丰宁| 九龙城区| 齐齐哈尔市| 获嘉县| 隆子县| 潞西市| 黔西县| 张家川| 五大连池市| 庆云县| 上虞市| 五常市| 娄烦县| 雷波县| 无锡市| 彭山县| 南雄市| 黑山县| 武汉市| 江源县| 利津县| 昭觉县| 喀什市|