课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于大多数零基础的人来说,除了自学编程技术以外就只有通过培训来掌握这部分的能力了,今天我们一起来了解一下,在java编程开发环境中的责任链模式与命令模式之间的区别以及优势都有哪些。
责任链模式
简介
责任链模式顾名思义,就是为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
简单的理解的话就是进行层级处理。生活中比较常见的是请假、出差、加薪等申请等等,而工作中比较常见的就是拦截器和过滤器。如果请假申请是用以前的那种方式,发起者需要和每个负责人进行申请,会比较麻烦,但是现在一般是走OA流程,只需发起一个OA申请即可。这也是一种 这种就是典型的责任链模式,发起者只需将请求请求发送到职责链上即可,无需关心处理细节和请求的传递。
责任链模式主要由这三个角色组成,请求接收者接口(Handler)、请求实现者类(ConcreteHandler)和请求发送者(Client)。
请求接收者接口:定义可以处理客户端请求事项的接口,包含“可链接下一个同样能处理请求”的对象引用。
请求实现者类:实现请求处理接口,并判断对象本身是否能够处理本次请求,如果不能完成请求,则交由后继者来处理。
请求发送者:将请求发送给一个接收者对象,并等待请求的回复。
责任链模式优点:
耦合度低,请求者和执行者并没有必然的联系;
灵活度高,可以通过内部成员来进行更改它们执行的次序;
扩展性好,Handler的子类扩展非常方便。
责任链模式缺点:
会在某程度上降低程序的性能,设置不当的话可能会出现循环调用。
在链过长时,会降低代码的阅读性以及增加代码的复杂度。
使用场景:
需要动态指定处理某一组请求时,在不确定接受者的的情况下,向多个对象发送请求时。
注意事项:
虽然责任链模式很灵活,但是牺牲的是一定的性能,因为责任链模式是层级处理,在处理数据的有一定的延迟,所所以需要低延迟的情况下,不推荐使用责任链模式。
命令模式
简介
命令模式顾名思义,是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
也就是将一个请求封装成一个对象,从而可以用不同的请求对客户进行参数化。
命令模式主要由这三个角色组成,命令对象(command)、命令执行对象(received)和命令请求对象(invoker)。
命令对象:通过接口或抽象类声明实现的方法。
命令执行对象:实现命令对象的方法,并将一个接收者和动作进行绑定,调用接收者相应的操作。
命令请求对象:用于执行这个请求,可以动态的对命令进行控制。
命令模式优点:
耦合度低,请求者和执行者并没有必然的联系;
扩展性好,Command的子类可以非常容易地扩展。
命令模式缺点:
如果命令过多的话,会增加系统的复杂度 。
使用场景:
如果在有类似命令需要指定的,就可以用命令模式,比如记录日志、撤销操作命令等。
作者:虚无境
节选:博客园
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!