GRASP Creator 与依赖注入完全矛盾吗?
如果不是,请解释原因。
这不是矛盾,但是它们都用于不同的情况。
您更有可能在域层中使用 Creator,并在应用程序服务层(日志记录服务、控制器工厂、身份验证服务等,具体取决于您的平台)和域服务/数据访问层(存储库、数据映射器、数据网关等)中使用依赖注入或工厂。
Larman在"应用UML和模式"(其中定义了GRASP模式/原则)中明确指出,在重用回收实例对性能很重要或决定需要实例化家庭中的哪个类的情况下,Creator是禁忌的。在这些情况下,实例化最好降级为工厂、抽象工厂或 DI。