问题 问答题

PH软件公司承接了某企业二期信息化软件开发项目,工程项目的研发任务之一是建设采购分级审批系统。该企业采购审批是根据采购金额的不同由不同层次的主管人员来审批,主任可以审批8万元以下(不包含8万元)的采购单,副董事长可以审批8~15万元(不包含15万元)的采购单,董事长可以审批15~45万元(不包含45万元)的采购单,45万元及以上的采购单就需要企业高层开会讨论决定。PH公司架构师采用某种设计模式设计的类图如下图所示。


请用350字以内的文字指出该公司架构师所采用的设计模式的具体名称、设计意图及其优缺点。

答案

参考答案:名称:Chain of Responsibility(职责链)模式。
设计意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系;将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
优缺点:①降低了耦合度;②增加了给对象指定责任的灵活性;③类的集合可以作为一个整体;④不保证被接收等。

解析:Chain of Responsibility(职责链)模式可以在系统中建立一个链,这样消息就可以在首先接收到它的级别处被处理,或者可以定位到可以处理它的对象。依题意,该企业的采购审批是分级进行的,可以采用职责链(Chain of Responsibility)设计模式对该采购审批过程进行设计,设计后得到的类图如题中图所示。
chain of Responsibility(职责链)模式的设计意图是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系;将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。换而言之,其目的是为了将一个请求发送给一个对象集合,对象被组织成一条链,而负责处理该请求的对象将获取请求消息并加以处理,其余对象则仅仅负责将该请求消息按照责任链的顺序传递到下一个对象。因此责任链模式的关键在于组织不同的对象成为一条链并传递消息。根据题干给出的不同层次主管人员的审批额度“主任:8万元以下,副董事长:8万元~15万元,董事长:15万元~45万元,开会讨论:45万元及以上”,对象在职责链中的顺序应该为:Director→Vicepresident→Presiden→Congress Meeting。由于主任的审批额度最小,因此审批的请求应该从主任(Director)开始。
Chain of Responsibility模式具有以下一些优点和缺点。
(1)降低了耦合度。该模式使得一个对象无须知道是其他哪一个对象处理其请求。对象仅需知道该请求会被“正确”地处理。接收者和发送者都没有对方的明确的信息,且链中的对象不需要知道链的结构。结果是,职责链可简化对象的相互连接。它们仅需要保持一个指向其后继者的引用,而不需要保持它所有的候选接收者的引用。
(2)增加了给对象指定责任(Responsibility)的灵活性。当在对象中分派职责时,职责链给出更多的灵活性。可以通过在运行时刻对该链进行动态的增加或修改来增加或改变处理一个请求的那些职责。可以将这种机制与静态的特例化处理对象的继承机制结合起来使用。
(3)由于在一个类中产生的事件可以被发送到组成中的其他类处理器上,因此类的集合可以作为一个整体。
(4)不保证被接收。既然一个请求没有明确的接收者,那么就不能保证它一定会被处理——该请求可能一直到链的末端都得不到处理。一个请求也可能因为该链没有被正确配置而得不到处理。

问答题 简答题