意图在维持原有接口不变的前提下,动态的为类增加功能。
动机动态调整一个类的功能有多种方式。
一种是替换,例如桥接模式可以通过替换实现类对象来改变具体的实现。
另一种方式是堆叠,也就是通过多个步骤完成一项工作。
最简单的例子是做菜:先加油,再加葱花,接下来加肉片,加青菜,最后加盐,加鸡精等。
当然也有人还会加辣椒,大料等,这也没问题。
炒菜的过程有如下几个特点,这才是重点。
每一步都相互独立,操作的对象都是锅里的菜。
步骤的选择是动态的,每一步都是可选项,顺序也可以会变化。
每一步都是只管做自己的事,不用关心其他步骤是否存在。
锅里的菜会随着每一步的进行而逐渐发生变化,直至完成。
这个过程也许有些过于接地气了,接下来看看软件开发中的例子:图像处理过程可以看作是调白平衡,降噪,锐化,彩度,切割,旋转处理的组合。
网络传输数据的处理可以看作是,校验,加密,压缩等处理的组合Wizard形式的安装流程,参数设定流程可以拆分为多个步骤的组合等等等等。
划重点基本上只要是分阶段处理数据或者事务的场合都或多或少的具备炒菜的特征。
觉得本文有帮助?请分享给更多人。
关注【面向对象思考】,轻松学习每一天!面向对象设计,面向对象编程,面向对象思考!