Java建模: UML工作簿,第4部分 - 编程入门网
代替对实体 bean 的多个调用。新的会话 bean 代表客户机对服务器上的实体 bean 进行调用。
为了说明会话虚包模式,我们来考虑这样一个用例,用户能将贷款支付的帐目记入她的支票帐户的借方。如果我们用实体 bean 来实现这个付款用例,则一个简单的事务需要跨网络进行四个调用,如图 5 所示。此时您可能会回想起来,在序列图中,斜向箭头表明消息有较漫长的响应时间(这是跨网络发送消息而不是直接将消息发送到对象的结果)。此外,有可能其中某个事务永远也不会实际完成。 图 5 说明了实体 bean 将如何管理付款用例。 图 5. 用实体 bean 的办法来实现偿还贷款 对于我们的用例,单单实体 bean 显然不会是一种好的实现。性能就很成问题,而无法完成最后一个步骤(完成支付)可能会是一个更大的问题。通过在这个方案中加入一个会话 bean,会话虚包解决了这些问题。会话 bean 充当参与者的本地代理。 用会话 bean 进行建模 从逻辑上说,会话 bean 封装了它所代表的参与者所希望的操作。这样,会话 bean 就为我们与实体 bean 的交互提供了一个 虚包。会话 bean 让我们不用在网络间拖动数据几次,而是通过服务器上的一个事务就可以实现我们的目标。而且,注入会话 bean,就确保了用户事务的原子性,从而付款将被安全记入贷方。例如,会话 bean 会回滚无法完成的支付的任何借项。这就保证了我们用户的钱不会凭空消失。 会话 bean 还能代表参与者进行多种操作。会话 bean 的行为与参与者在用例模型内汇集起来的行为一致。因此,如果一个申请人参与者发起了一个申请贷款用例和一个接受贷款用例,则这两个用例的工作流将被收集到申请人会话 bean 中。申请人会话 bean 可以申请一项贷款,然后在另一个事务中接受它。 图 6 说明了引入会话 bean 给我们的付款用例带来的变化。 图 6. 用会话虚包的办法实现付款 正如我们已经看到的,会话 bean 被指定给某个参与者,利用它对该参与者的特有了解,会话 bean 既方便了参与者的事务又增强了系统性能。会话虚包模式可用于已知的和未知的参与者。这种模式不太用于服务器角色和接收器角色的参与者。它更多是为了启动器或代理角色的参与者而被实现。显然,付款用例中的客户是启动器角色。 结束语 对于将用例图中的参与者转换成类图中有效的抽象,镜像映象模式和会话虚包模式是很有用的,这样最终将能够更清楚地转换成代码。已知的参与者通常在系统的逻辑中能有某种形式的体现;匿名参与者也一样。 从图到代码的转换,其更重要的含义是 可跟踪性。通过使用诸如镜像映象和会话虚包之类的模式,我们就可以跟踪类的创建过程,以反映出外部实体的标识或它所提供的服务。我们可以通过其逆过程理解使这些类得以产生的元素。这些转换的目标是使抽象更好,代码更易于理解和维护。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |