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

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

写在前面

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


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


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


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


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


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


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


真实业务实现装饰者模式


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


业务场景


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


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


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


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


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


image.png


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


image.png


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


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


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


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


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

image.png

image.png

image.png


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

image.png

image.png

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


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


相关文章
|
8月前
|
设计模式 Java
Java设计模式【十】:装饰者模式
Java设计模式【十】:装饰者模式
57 0
|
1月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
41 2
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
2月前
|
设计模式 Java Kotlin
Kotlin - 改良设计模式 - 装饰者模式
Kotlin - 改良设计模式 - 装饰者模式
31 4
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
45 0
|
3月前
|
设计模式 Java Kotlin
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
Kotlin 学习笔记- 改良设计模式 - 装饰者模式
37 0
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
Kotlin教程笔记(56) - 改良设计模式 - 装饰者模式
24 0
|
7月前
|
设计模式 Java API
程序技术好文:设计模式:装饰者模式
程序技术好文:设计模式:装饰者模式
32 0
|
8月前
|
设计模式 Java
【设计模式系列笔记】装饰者模式
装饰者模式是一种结构型设计模式,它允许你通过将对象放入包含行为的特殊封装类中来为原始对象添加新的行为。这种模式可以动态地将责任附加到对象上,而不影响其它对象。
78 11