1.命令模式
2.装饰者模式
3.两者区别
所谓的设计模式,很多都是针对面向对象编程的(即符合面向对象的三大特性六大原则),也就是针对不同业务场景需求,需要设计一些比较好的类关系图,
其中包括继承和组合,继承包括实现接口(like-a)和继承抽象类(is-a)及继承子类(is-a)三种方式;组合方式(has-a),一般通过构造方法或者setter方法来传入需要组合的类实例方式(依赖注入)。
命令模式和装饰者模式的区别:
其中比较明显的区别就是装饰者模式中component被装饰后依然是component(因为采用了继承的方式),同时为了达到可以方便的真实去装饰具体其他component,所以需要传入被装饰的component实例(这里采用了组合方式)。而命令模式却不同,发出命令者和执行命令者并不是同一类(没有继承关系),都是通过组合实现的,发出命令者和命令真实执行者被这个command彻底隔离,其实也可以看作真实执行者被command类包装了,或者说代理了。
tips:上图菱形加一个实线和箭头表示组合了某个父类关系,直线加一个空心三角形表示继承关系,直线加一个箭头表示组合了某个具体子类的关系。