根据真实业务场景去实现一下设计模式中的装饰者模式

简介: 根据真实业务场景去实现一下设计模式中的装饰者模式

写在前面

Java中的设计模式可分为创建型模式、结构型模式、行为型模式,每一类都包括多个具体的设计模式。


今天我们就来细说一下结构型模式中的装饰者模式。


装饰者模式,Decorator Pattern,可以在不改变当前对象的情况下,为当前对象增加新的功能,这期间不会修改对象结构。


装饰者模式其实在生活中有很多可以抽象出来的例子。


比如在星巴克中喝咖啡,就会给咖啡(对象),增加奶(功能),增加糖(功能)。


再比如在食堂中吃盖饭,就会给米饭(对象),增加木须肉(功能),增加红烧肉(功能)。


等等等,看了装饰者模式后,只要你细心一些,就会发现生活各处有很多很多的相似业务。


真实业务实现装饰者模式


接下来我们根据食堂业务来实现一下装饰者模式。


业务场景


A同学今天涨工资了,点了个豪华套餐,红烧肉盖饭 + 红烧肉盖饭 + 鸡排 + 煎蛋,其中一份只有红烧肉不要饭,因为碳水太多容易长胖。


在开发人员的角度,果断想到这里可以是装饰者模式。


盖饭(米饭盖米饭也是盖饭,不要杠......)是对象,红烧肉、鸡排、煎蛋是功能,从原本的对象上加上新功能,而且原本的对象结构没有变,依然可以再加入新的菜品(功能),这最后计算费用的时候无疑就是要使用装饰者模式了。


我们用代码来实现一下吧。


因为盖饭会存在很多种初始套餐,所以我们要把盖饭类设置成抽象类,初始套餐(红烧肉盖饭、木须肉盖饭等等)只要去继承盖饭抽象类就好了。


image.png


盖饭抽象类创建好了,接下来就是实现红烧肉盖饭的类了。


image.png


其中实现了盖饭抽象类的cost方法,并在方法内写入红烧肉盖饭的价钱。


当然了,还会有各种各样的盖饭,我就不一一实现了。


然后就是配菜类了,为了对配菜统一管理和后期业务功能复杂化后的维护考虑;


我们还要在这里创建一个配菜抽象类,所有的配菜都应该去继承配菜抽象类;


而配菜抽象类去继承盖饭抽象类。

image.png

image.png

image.png


这样的设计就可以用非常友好的代码来计算出相应的钱数了,来看最终的实现方法。

image.png

image.png

大功告成,这样,一个装饰者模式就实现出来了。


下一篇说一下装饰者模式的优缺点,以及在什么情况下使用装饰者模式,希望大家点赞支持!!


相关文章
|
设计模式 Java
Java设计模式【十】:装饰者模式
Java设计模式【十】:装饰者模式
106 0
|
5月前
|
设计模式 缓存 安全
【设计模式】【结构型模式】装饰者模式(Decorator)
一、入门 什么是装饰者模式? 装饰者模式(Decorator Pattern)是 Java 中常用的结构型设计模式,它能在不修改原有对象结构的前提下,动态地为对象添加额外的职责。 为什么要装饰者模式?
105 8
|
7月前
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。
|
10月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
115 2
|
11月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
11月前
|
设计模式 Java Kotlin
Kotlin - 改良设计模式 - 装饰者模式
Kotlin - 改良设计模式 - 装饰者模式
70 4
|
11月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
12月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
88 0
|
12月前
|
设计模式 Java Kotlin
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
108 0

热门文章

最新文章