我的 c++ SOA 应用程序有一个“会话”概念,用于在服务之间交换数据。例如,它用于在执行提交或回滚更改的会话 B 之前检查某些服务 A 操作的合法性。任何。
我有 2 种会话模式:正常和假设。更进一步,我有不同的会话,合法性会话,分配会话,提交会话等。这是一个主要问题。合法性会话可以是假设或真实等。
如何解决这个问题并避免代码重复?
我可以制作一个ISessionFactory接口并让WhatIfFactory和RealFactory实现它。然后我可以制作一个ILegalitySession并让WhatIfLegalitySession和RealLegalitySession实现它。然后我的工厂将返回适当的对象。
它有两个主要问题。如果新模式来了怎么办?我将不得不为所有会话实施新工厂和新课程!如果出现新的会话类型怎么办?我必须改变两个工厂...
也许从 2 个层次结构中辞职并让 whatIf 会话“装饰”真实会话?如何本地化更改?