【发布时间】:2021-08-10 17:02:54
【问题描述】:
处理实例化的依赖关系。
所以一个普遍的问题: 如何处理实例化的依赖关系?
假设我有两个功能:
public class Manager : ScriptableObject
{
private var data;
private void GetDataFromTextAsset() => data = BuildData();
public bool IsValidInput(var input)
{
if(data.SomeAspectIsTrue)
return true;
return false;
}
}
还有:
public class User
{
public void SomeFunction(var input)
{
if(_manager.IsValidInput(input))
DoStuff();
}
}
解决这种依赖关系、解耦两个类、可扩展和可测试的正确方法是什么?
我想使用 Zenject,但我不确定这是否适合这个特定问题?
我也猜单身人士不在窗外?
【问题讨论】:
-
我认为工厂将是要走的路。
-
工厂将创建动态解析其依赖关系的实例,我认为情况并非如此。这将取决于如何使用
User -
@Franz Gleichmann 你能扩展一下吗?将 GetDataFromTextAsset() 放入工厂,如何将该实例分发给所有用户?
-
是的,用一些示例代码回答
-
@rustyBucketBay 我的用户只需要访问管理器上的 IsValidInput() 方法,这取决于从文本资产构建的数据库,因此我希望管理器是单数的。跨度>
标签: c# unity3d design-patterns dependencies zenject