轻松掌握java中的装饰者模式

此篇需要了解方法重写,this与super关键字,不懂的可以看看

https://blog.csdn.net/javacoder_juejue/article/details/81114505

https://blog.csdn.net/javacoder_juejue/article/details/81103204

初步了解概念:

轻松掌握java中的装饰者模式_第1张图片

轻松掌握java中的装饰者模式_第2张图片

 

举个例子进一步了解:

轻松掌握java中的装饰者模式_第3张图片

然后看代码深刻理解:(不理解抽象类与接口如何运用的看看这篇

https://blog.csdn.net/javacoder_juejue/article/details/81169609

下面的代码自己手敲一遍才容易理解,实在不懂我最后会给出通俗易懂的总结

1.先定义个手机接口,里面有打电话的方法

轻松掌握java中的装饰者模式_第4张图片

2.定义IPhone手机类,实现手机接口

轻松掌握java中的装饰者模式_第5张图片

3.需求1:在接电话前,听到铃声

实现如下:

定义一个给手机装饰的抽象类,重写打电话方法

轻松掌握java中的装饰者模式_第6张图片

定铃声类继承上面的抽象类

轻松掌握java中的装饰者模式_第7张图片

测试类如下:

轻松掌握java中的装饰者模式_第8张图片

控制台输出结果入下:自己分析下,还不懂就继续看

轻松掌握java中的装饰者模式_第9张图片

需求2:打完电话后,听到音乐如果上面懂了的话,这个基本是一样的

定义音乐装饰类继承上面抽象类

轻松掌握java中的装饰者模式_第10张图片

测试类如下

轻松掌握java中的装饰者模式_第11张图片

控制台输出结果入下:自己分析下,前面两个需求懂了一个就都懂了

轻松掌握java中的装饰者模式_第12张图片

需求3:我要在通话前有铃声,打电话后放音乐(就是把以上两个需求合并)

那么我们要怎么做呢?

这里只需要加两行代码(下面红线是编译器还没反应过来,其实没有错)

轻松掌握java中的装饰者模式_第13张图片

控制台打印结果如下:

轻松掌握java中的装饰者模式_第14张图片

到此演示完毕,下面是

分析:看这里

我们每多一个new ,就多一重修饰。而最后的参数-这里是iPhone,就是我们要修饰的对象。

至于为什么为什么定义抽象类跟接口类似的问题,可以看俺前面的博客,不掌握那些知识的前提下先别看这篇吧...

还有,记得多敲,不敲看懂了也很快就忘了!

 

 

 

 

你可能感兴趣的:(常用设计模式,设计模式精讲)