与架构设计相关的问题

时间:2013-09-12 16:15:37

标签: .net architecture

我有设计问题,希望能得到帮助。

假设我有一个域名实体说“用户”,“机构”。

此“用户”可以注册到各种“服务”,例如“会计或库”。我创建了一个抽象类“ServiceRegistration”,“User”列出了这些服务注册。这些服务只是将来作为组件插入的模块。因此,当我的Library组件完成后,我可以插入我的系统。 Library组件将具有“LibraryServiceRegistration”类,该类将存储在“User” - >中。 “ServiceRegistration”列表。 “用户”不知道这个“LibraryServiceRegistration”,因此变得可扩展。库组件当前知道“用户”,因此它可以将“LibraryServiceRegistration”信息存储在“用户”中。

但现在说我创建了一个新的组件“会计”,适用于“用户”和“机构”。我的会计组件将“AccountingServiceRegistration”存储在“User” - >中。每个用户的“ServiceRegistration”和“Institution” - >每个机构的“服务注册”。

我希望隔离“Accounting”组件,以便我可以将其配置为它可以提供服务的域实体。所以目前它可以在不改变代码的情况下为“用户”和“机构”提供服务。

这可能吗?

1 个答案:

答案 0 :(得分:0)

很明显,系统中的某些代码需要了解服务和实体。问题实际上是哪一段代码应该照顾它。

以下是我看到的选项:

  • 实体定义了它可以采取的服务(根据您的帖子不合适)
  • service定义它支持哪些实体(可能)
  • 服务注册类定义它支持哪些实体(这也可能是好的)
  • 新类(工厂?)处理匹配(如果您已经在使用工厂,则可以工作)

如果您的所有域实体都实现了通用接口,那么所有这一切都变得容易多了。

我的建议是在基本服务上有一个抽象方法,列出它支持的实体。然后,每个服务将声明它支持的实体。此外,无论Service上的任何方法创建针对实体的新注册,都能够验证实体类型。

我希望这会有所帮助