装饰者模式

    在coding的时候,难免会遇到这个代码框架的修改、优化,或者有时候是在原有的代码框架上面新增其它的动作,假设原本我们的代码框架是由一系列的action按照一定的顺序组成的,比如一个简单的网络请求框架,都必须要经过这样的一个流程:client.newHttp->client.getData->client.parseData->client.showData

假设我们要在上面的这个流程里面的client.parseData后面加入一个解密的动作client.encrypt,一般的作法是直接修改这个代码,在这个框架流程中补充新的动作,但是这样子则违反了我们的“开放-封闭原则”【所谓的开放-封闭原则,指的是我们的对象对外是只开放这个接口供调用,其内部的代码逻辑不允许可视,且尽量不要去编辑修改到原有的代码逻辑】。

    这样子的话,我们可以在这个框架搭建的初期进行各个动作的封装,让其都继承于一个抽象超类AbstractParent,并且拥有对这个超类的一个引用,这个引用目的是为了在执行自己的动作之前,预先执行父类或者先前已有的动作,达到动作执行的有序性。以下是对应的uml模型:

装饰者模式_第1张图片

这样子我们就可以确保这个action达到有序的执行而不改变原有的代码逻辑了。

你可能感兴趣的:(装饰者模式)