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

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

写在前面

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


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


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


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


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


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


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


真实业务实现装饰者模式


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


业务场景


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


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


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


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


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


image.png


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


image.png


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


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


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


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


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

image.png

image.png

image.png


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

image.png

image.png

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


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


相关文章
|
9月前
|
设计模式 Java
Java设计模式【十】:装饰者模式
Java设计模式【十】:装饰者模式
59 0
|
17天前
|
设计模式 存储
「全网最细 + 实战源码案例」设计模式——装饰者模式
装饰者模式(Decorator Pattern)是一种结构型设计模式,通过“包装”现有对象来为其添加额外功能,而无需修改原有代码。它通过创建装饰类来扩展对象的功能,而非继承。该模式由抽象构件、具体构件、抽象装饰者和具体装饰者组成,允许在运行时动态组合功能。穿衣服的例子很好地解释了装饰者模式:你可以根据需要一层层添加衣物,如毛衣、夹克和雨衣,每件衣物都扩展了基本行为,但不是你的一部分,可以随时脱掉。 优点包括灵活性、避免子类爆炸和符合开闭原则;缺点是可能增加复杂性和难以理解。适用于希望在不修改代码的情况下为对象新增行为的场景,尤其当继承难以实现或不可行时。
50 15
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
47 2
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
3月前
|
设计模式 Java Kotlin
Kotlin - 改良设计模式 - 装饰者模式
Kotlin - 改良设计模式 - 装饰者模式
35 4
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
4月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
49 0
|
4月前
|
设计模式 Java Kotlin
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
46 0
|
4月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
32 0
|
8月前
|
设计模式 Java API
程序技术好文:设计模式:装饰者模式
程序技术好文:设计模式:装饰者模式
36 0

热门文章

最新文章