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...}
这只是允许在运行时实例化的对象将自己添加到可用的画布而不需要通过finDWithTag或finDWithType方法访问它,如果使用太多则会损害性能.@H_419_5@
这是不好的做法还是好的?我的同事认为这代表单例编程,但它当然不是因为它允许存在多个对象并被使用.@H_419_5@解决方法 这基本上是一个基于Singleton模式的 Service Locator“ Anti Pattern”(惊喜).但是,您正在检索对象实例,而不是检索服务实例.
无论名称如何,这实际上都不会创建更模块化的应用程序.相反,您在整个应用程序中创建了硬依赖关系,这使得将它拆分为相应的组件变得更加困难.@H_419_5@
Martin Fowler很好地记录了这种模式.您可以在here找到更多信息.@H_419_5@ 总结
以上是内存溢出为你收集整理的c# – 这个编程方法叫什么?这不好吗?全部内容,希望文章能够帮你解决c# – 这个编程方法叫什么?这不好吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)