gpt4 book ai didi

c# - 这种编程方法叫什么?这不好吗?

转载 作者:太空狗 更新时间:2023-10-29 21:22:03 24 4
gpt4 key购买 nike

最近在我的 Unity 项目中,我发现要创建一个更加模块化的应用程序,在类中有一个静态列表会有所帮助,该类包含对创建的所有或部分对象的引用,以便可以从其他部分轻松访问它们的程序。示例如下:

private static List<Canvas> availableCanvases = new List<Canvas>();

void Start () {
availableCanvases.Add(this);
}

public static void AddComponentToCanvas(Transform component) {
for (int i = 0; i < availableCanvases; i++) {
//Make sure the canvas still exists
if (availableCanvases[i] != null) {
component.SetParent(availableCanvases[i]);
return;
} else {
availableCanvases.RemoveAt(i);
i--;
}
}

//Reached if no canvas found
//Create new canvas or create error etc...
}

这仅允许在运行时实例化的对象将自身添加到可用 Canvas ,而无需通过 findWithTag 或 findWithType 方法访问它,如果使用过多会损害性能。

这是不好的做法还是好的?我的同事认为这代表了单例编程,但它当然不是,因为它允许存在和使用多个对象。

最佳答案

这本质上是一个 Service LocatorAnti Pattern” 是基于单例模式的(惊喜)。但是,您不是检索服务实例,而是检索对象实例。

不管名称如何,这实际上并没有创建一个更加模块化的应用程序。相反,您在整个应用程序中创建了硬依赖性,这使得将其拆分为各个组件变得更加困难。

Martin Fowler 很好地记录了该模式。您可以找到更多信息here .

关于c# - 这种编程方法叫什么?这不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com