问题 问答题

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


[问题2]
请用300字以内的文字指出该公司架构师所采用的设计模式的适用性,以及图6—5中需要考虑哪些实现问题

答案

参考答案:在以下情况中,应该使用Chain of Responsibility模式。
(1)多个对象可以处理一个请求,而其处理器却是未知的。
(2)想要在不指定确切的请求接收对象的情况下,向几个对象中的一个发送请求。
(3)可以动态地指定能够处理请求的对象集等。
依题意,在图4—9中,需要考虑以下一些职责链模式实现问题。
(1)实现后继者。链有两种方法可以实现后继者链:①定义新的链接(通常在类Approver中定义,但也可由类Director、类Vicepresident、类Presiden和类Congress来定义);②使用已有的链接。
通常,可使用已有的对象引用来形成后继者链。例如,在一个部分一整体层次结构中,父构件引用可定义一个部件的后继者,窗口组件(Widget)结构可能早已有这样的链接。在Composite模式中更详细地讨论了父构件引用。当已有的链接能够支持所需的链时,完全可以使用它们。这样就不需要明确定义链接,而且可以节省空间。但如果该结构不能反映应用所需的职责链,那么就必须定义额外的链接。
(2)连接后继者。如果没有已有的引用可定义一个链,那么就必须自己引入它们。这种情况下类Approver不仅定义该请求的接口,通常也维护后继链接。这样类Approver就提供了ApproverRequest的缺省实现,ApproverRequest向后继者(如果有的话)转发请求。如果类Director的子类对该请求不感兴趣,它不需要重定义转发操作,因为它的缺省实现进行无条件的转发。
(3)表示请求。可以用不同的方法表示请求。最简单的形式,请求是一个硬编码的(hard-coded)操作调用。这种形式方便而且安全,但只能转发Approver类定义的固定的一组请求。
另一选择是使用一个处理函数,这个函数以一个请求码(如一个整型常数或一个字符串)为参数。这种方法支持请求数目不限。唯一的要求是发送方和接受方在请求如何编码问题上应达成一致。该方法更为灵活,但它需要用条件语句来区分请求代码以分派请求。另外,无法用类型安全的方法来传递请求参数,因此它们必须被手工打包和解包。显然,相对于直接调用一个操作而言它不太安全。
为解决参数传递问题,可以使用独立的请求对象来封装请求参数。Request类可明确地描述请求,而新类型的请求可用它的子类来定义。这些子类可定义不同的请求参数。处理者必须知道请求的类型(即它们正使用哪一个Request子类)以访问这些参数。为标识请求,Request可定义一个访问器(accessor)函数以返回该类的标识符。或者,如果实现语言支持的话,接受者可使用运行时的类型信息。
(4)在Smalltalk中自动转发。你可以使用Smalltalk中的doseNotUnderstand机制转发请求。没有相应方法的消息被doseNotUnderstand的实现捕捉(trap in),此实现可被重定义,从而可向一个对象的后继者转发该消息。这样就不需要手工实现转发;类仅处理它感兴趣的请求,而依赖doesNotUnderstand转发所有其他的请求。

单项选择题

甲、乙两公司不存在关联方关系,且均为增值税一般纳税企业。甲公司存货按计划成本进行日常核算,期末按成本与可变现净值孰低法计价;所购原材料及其所生产的产成品适用的增值税税率为17%、消费税税率为10%。2003年9月10日,甲公司与乙公司达成债务重组协议:甲公司以一批产成品和一项固定资产清偿所欠乙公司的债务478250元。重组业务于9月20日完成,重组过程中除产成品应交增值税、消费税外,无其他相关税费。
甲公司的该批产成品计划成本为200000元(所耗原材料的实际成本为160000元),未计提存货跌价准备,月末计算的成本差异率为-3.75‰,重组日不含税售价为225000元;该项固定资产的账面原价为500000元,已提折旧250000元,已提减值准备50000元,重组日公允价值为175000元。
乙公司对应收甲公司的债权未计提坏账准备;将收到的甲公司产成品作为库存商品管理(收到相应的增值税专用发票并通过税务机关的审核、认证),并于2003年12月卖出其中的50%;将收到的甲公司固定资产作为固定资产管理,并立即投入使用。乙公司预计该项固定资产尚可使用年限为4年、预计净残值为10000元、选用平均年限法计提折旧(与税法规定相同);2003年末未对债务重组换入的库存商品计提存货跌价准备,对换入的固定资产计提减值准备10000元。
根据上述资料,回答下列问题:

乙公司因该项债务重组业务而收到的库存商品的入账价值为( )元。

A.219587

B.220412

C.225000

D.247500

判断题