装饰器和外观模式
当第一眼看到这两个模式的时候,我感觉很相同,但是当我认真的学习了相关知识的时候,发现差别很大。举个例子理解的话:对于一杯奶茶而言:
装饰器模式:就是在奶茶里面加椰果、加珍珠、加燕麦等等。通过一种加入的方式,给已有的东西添加功能
外观模式:就是奶茶店的招牌,你不需要知道每个奶茶是怎么做的,你只需要调用招牌,选择一种奶茶,然后别人就会给你你想要的奶茶。将一个系统或者一个功能组的所有接口封装成一个类,这就是外观模式,从外而观之的接口。
我只是在进行学习的时候将两种模式进行了联合使用,而不意味着这两种模式就只能一起使用。
对于一杯奶茶而言,一杯奶茶是一个具体的东西,而装饰器模式就是给奶茶里面添加椰果、燕麦、珍珠等等的配料,而在在代码中就表示为为一个已经存在的类,附加一些其他的功能,但是在使用的时候,不同的地方所需要的功能不尽相同,因此如果直接使用继承来实现所有的功能会造成资源的浪费,因此产生了装饰器模式,将大部分的功能以一个个外部挂接类来补充具体类,你在不同的地方只需要对具体类进行包装,使其具备需要具备的功能即可。