如何为多个应用程序建模核心业务逻辑和专业化?

Posted

技术标签:

【中文标题】如何为多个应用程序建模核心业务逻辑和专业化?【英文标题】:How to model core business logic and specializations for multiple applications? 【发布时间】:2012-08-20 08:57:04 【问题描述】:

我遇到了一些复杂的场景,我一直在尝试确定一个好的模型。基本思想是我有一个业务逻辑层,由在同一域中工作的多个应用程序共享。某些次要功能(例如安全性和可用信息)因应用程序而异。

我有一个特定于应用程序的类要在每个应用程序中使用(由工厂提供)。这将确保在每个应用程序中,唯一加载的对象是与当前应用程序相关的类型。

我遇到的问题是,如果我有一个从核心逻辑类 A 继承的核心逻辑类 B 和一个应用程序特定版本的 A,我需要一些方法来让应用程序特定版本的 B 在两者中都表现为 B 更改的方式以及为 A 更改的方式。

我意识到这是一个经典的多重继承问题,但我想我会在这里查看是否有人对允许特定应用程序和核心共享功能的替代模型有任何想法。

此时我的另一种选择是简单地禁止在任何特定于应用程序的代码中进行继承,并要求将任何常见的特定于应用程序的代码写入两个非相关应用程序特定叶使用的共享库中。

【问题讨论】:

你的问题对我来说听起来有点模糊。你能提供一个小的具体例子吗?我感兴趣的问题是“我预计在不久的将来会对代码进行什么样的更改,什么样的设计可以减少维护的痛苦” 这是一个广泛的问题。一般来说,我正在寻找一种方法来支持特定于应用程序的功能,同时仍然在应用程序之间使用共享的核心业务层,并抽象出与应用程序相关的差异。两个应用程序的一个很好的例子可能是前端网站、后端 Web 服务和 Windows 服务。某些业务逻辑的确切需求和行为在不同的应用程序中可能略有不同,但大部分功能都是通用的。 @AJHenderson 帮助您解决了您最近的问题;在我看来你也需要接口:P 【参考方案1】:

这样做的最终结果是,每个应用程序的继承需要限制在叶子中,并且跨多个叶子的应用程序特定的任何内容都需要分解为可以包含的类。不理想,但在没有多重继承的情况下可以做到最好。

【讨论】:

以上是关于如何为多个应用程序建模核心业务逻辑和专业化?的主要内容,如果未能解决你的问题,请参考以下文章

如何构建以应用为核心的运维体系

何为微服务?

如何为我的核心数据实体建模?

10-单点登录系统拓展实现(自己尝试实现)

是否可以对事件进行建模以封装在不同时间发生的多个事情

Spring 简介