【发布时间】:2026-01-17 23:20:02
【问题描述】:
我的程序中的许多业务逻辑服务需要访问一组通用的非业务逻辑服务,例如电子邮件、打印、消息传递(消息框和提示)和日志记录。我计划创建一个门面来封装 EmailService、PrintService、MessageService 和 LogService,这样每个业务逻辑服务只需要门面类的一个构造函数参数,而不是每个服务的四个参数。
所以不是
public BusinessLogicService(IEmailService emailService, IPrintService printService, IMessageService messageService, ILogService logService)
{
this.EmailService = emailService;
this.LogService = logService;
this.MessageService = messageService;
this.PrintService = printService;
}
我要这个
public BusinessLogicService(ISomeFacade facade)
{
this.SomeFacade = facade;
}
我的问题是:
这是外观模式的正确用法吗?如果没有,我应该怎么做?
我假设拥有许多业务服务所需的标准服务集是很常见的,那么这种封装 EmailService、PrintingService、MessagingService、LoggingService 的外观是否有标准命名约定?以及将来可能需要的其他一些非业务逻辑服务?
【问题讨论】:
-
看起来像 服务定位器反模式
-
在你的情况下
ISomeFacade的定义是什么?
标签: c# architecture facade