加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 这个编程方法叫什么?这不好吗?

发布时间:2020-12-15 08:29:35 所属栏目:百科 来源:网络整理
导读:最近在我的Unity项目中,我发现要创建一个更模块化的应用程序,它有助于在类中包含一个静态List,该类包含对所有或部分创建的对象的引用,以便可以从程序的其他部分轻松访问它们. .一个例子如下: private static ListCanvas availableCanvases = new ListCanvas
最近在我的Unity项目中,我发现要创建一个更模块化的应用程序,它有助于在类中包含一个静态List,该类包含对所有或部分创建的对象的引用,以便可以从程序的其他部分轻松访问它们. .一个例子如下:
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方法访问它,如果使用太多则会损害性能.

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

解决方法

这基本上是一个基于Singleton模式的 Service Locator“ Anti Pattern”(惊喜).但是,您正在检索对象实例,而不是检索服务实例.

无论名称如何,这实际上都不会创建更模块化的应用程序.相反,您在整个应用程序中创建了硬依赖关系,这使得将它拆分为相应的组件变得更加困难.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读