设计模式之装饰者模式(23-1)

简述:

  1. 学习装饰者模式最大的体验是,对于传统类的功能扩展都是通过继承来实现的,但是这种方式耦合度过高。
  2. 而装饰者模式在不改变原有的业务类的前提下,更加灵活的扩展业务。
  3. 类型-结构性

具体代码如下:

(1)普通业务实体类

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

(2)实体类的抽象

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

(3)抽象装饰类 (关键)

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();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 真诚的,TNANKS。 个人Github-23种设计模式案例链接 创建型模式 工厂模式 工厂模式(Factory ...
    水清_木秀阅读 26,515评论 11 204
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,412评论 1 15
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,378评论 3 14
  • 链接:https://github.com/WiKi123/DesignPattern作者: WiKi123(gi...
    树懒啊树懒阅读 9,138评论 0 2
  • 我遇见过四个姑娘,四个愿意把自己当公主,却不得不把生活过成苦难的姑娘。 第一个叫宇菲,昔我往矣,杨柳依依。今我...
    郝好吃面阅读 4,298评论 5 4

友情链接更多精彩内容