装饰者模式的动态撤销功能的实现

来源:11-2 装饰者模式coding

血夜之末

2019-06-13

geely老师,装饰者模式的适用场景中提到动态撤销功能,那是怎么实现的呢?
那些Decorator添加的职责,通过怎样的方式来撤销呢。明明都加到基本类上了。

写回答

2回答

geelylucky

2019-06-14

同学,咱们可以提供一个撤销的方法

public void revoke(){

    //撤销到上一次的aBattercake

    this.aBattercake = this.aBattercake.getABattercake();

}

好好理解一下这个方法,逻辑有点绕。

1
0

血夜之末

提问者

2019-06-14

非常感谢。这个方法倒是之前没想到的。谢谢了。
那这样是不是只能按添加职责的顺序的倒序来撤销职责。
因为这样的方法返回的上一层的ABattercake()。
有没有比较简单的办法来撤销目标职责。

0
1
geelylucky
要看具体的业务,你怎么确定业务不是需要这样倒序的呢?如果是需要顺序的,就要改改数据结构,或者做成随机的。。。看情况吧。
2019-06-20
共1条回复

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3433 学习 · 408 问题

查看课程