命令模式和装饰者模式的区别

1.命令模式

命令模式和装饰者模式的区别_第1张图片

2.装饰者模式

命令模式和装饰者模式的区别_第2张图片

3.两者区别

所谓的设计模式,很多都是针对面向对象编程的(即符合面向对象的三大特性六大原则),也就是针对不同业务场景需求,需要设计一些比较好的类关系图,

其中包括继承和组合,继承包括实现接口(like-a)和继承抽象类(is-a)及继承子类(is-a)三种方式;组合方式(has-a),一般通过构造方法或者setter方法来传入需要组合的类实例方式(依赖注入)。

命令模式和装饰者模式的区别:

其中比较明显的区别就是装饰者模式中component被装饰后依然是component(因为采用了继承的方式),同时为了达到可以方便的真实去装饰具体其他component,所以需要传入被装饰的component实例(这里采用了组合方式)。而命令模式却不同,发出命令者和执行命令者并不是同一类(没有继承关系),都是通过组合实现的,发出命令者和命令真实执行者被这个command彻底隔离,其实也可以看作真实执行者被command类包装了,或者说代理了。

 

tips:上图菱形加一个实线和箭头表示组合了某个父类关系,直线加一个空心三角形表示继承关系,直线加一个箭头表示组合了某个具体子类的关系。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(设计模式)