我有以下问题:我有一组自动(监听事件)控制我的模型的引擎。下图显示了一般的类图:
现在我有一个知道 EngineFacade 的客户端,我想从客户端的 Engine2 设置属性 Active,但是客户端和 EngineFacade 都不知道三个引擎中的哪一个是 Engine2。
有两种方法,但我不喜欢其中任何一种:
- 检查其中一个引擎是否属于 Engine2 类型 - 如果有另一个类执行相同的任务但名称不同,我必须在 EngineBuilder 和 EngineFacade 中更改它。
- 检查标识符字符串 - 我真的不喜欢魔术字符串。
我在客户端站点上所知道的是存在或应该有一个处理网格的引擎。但我不知道更多。
也许我必须在两个恶魔之间做出选择,但也许你们中的一个有更好的解决方案。