2009-05-01 41 views
0

我的C++ SOA应用程序有一个“会话”的概念,用于在服务之间交换数据。在例子中,它用于在执行提交或回滚更改的会话B之前检查某些服务的合法性。随你。如何将我的课程设计为leverege factory并具有可扩展性?

我有2种类型的会话模式:普通和假设。更进一步,我有不同的会话,合法性会话,分配会话,提交会话等。这是一个主要问题。合法会话可以是假设或真实等。

如何解决这个问题并避免代码重复?

我可以做一个ISessionFactory接口,并有WhatIfFactoryRealFactory实现它。然后我可以做一个ILegalitySession并使WhatIfLegalitySessionRealLegalitySession实施它。然后我的工厂会返回适当的对象。

它有两个主要问题。如果新模式将来到呢?我将不得不为所有会议实施新工厂和新班级!如果新的会话类型来了呢?我必须改变两个工厂......

也许从2个层次辞职,并有什么会议“装饰”真正的会议? 如何本地化更改?

回答

1

尝试使用装饰器实现你的WhatIf。或者提取一些“假设”的具体部分到某种策略。

另一种选择是使用状态模式。 'WhatIf'状态和'真实'状态。

相关问题