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

asp.net – 你会认为这是一个单身/单身模式吗?

发布时间:2020-12-16 09:17:34 所属栏目:asp.Net 来源:网络整理
导读:想象一下,在Global.asax.cs文件中,我将实例类作为私有字段.我们这样说: private MyClass _myClass = new MyClass(); 我在Global上有一个名为GetMyClass()的静态方法,它获取当前的HttpApplication并返回该实例. public static MyClass GetMyClass(){ return
想象一下,在Global.asax.cs文件中,我将实例类作为私有字段.我们这样说:

private MyClass _myClass = new MyClass();

我在Global上有一个名为GetMyClass()的静态方法,它获取当前的HttpApplication并返回该实例.

public static MyClass GetMyClass()
{
    return ((Global)HttpContext.Current.ApplicationInstance)._myClass;
}

因此,我可以通过调用Global.GetMyClass()来获取当前请求httpapplication上的实例.

请记住,有多个(全局)HttpApplication.每个请求都有一个HttpApplication,它们是汇集/共享的,所以在最真实的意义上它不是真正的singleton.但它确实遵循了一定程度的模式.

所以问到这个问题,你至少会考虑这个单身模式吗?

你会说它不应该被使用吗?你会不鼓励使用它吗?你会说这是一个可能不好的做法,就像一个真正的单身人士.

您能否看到此类使用场景可能出现的任何问题?

或者你会说这不是一个真正的单身人士,所以没关系,也不错.你会推荐这个作为半准单身人士,每个请求需要一个实例吗?如果不是你会使用/给出什么其他模式/建议?

你有没有用过这样的东西?

我在过去的项目中使用了这个,但我不确定这是否应该让我远离.我过去从未遇到过任何问题.

请告诉我你对此的看法和意见.

我不是在问单身人士是什么.我认为在使用不当时会出现单身不良行为,这在很多情况下都是如此.那是我.但是,这不是我想要讨论的内容.我试着讨论我给出的这个场景.

解决方法

无论这是否符合Singleton的切割模式,它仍然遇到与Singleton相同的问题:

>它是一个静态的,具体的引用,不能替代单独的行为或在测试期间存根/模拟>您不能对此进行子类化并保留此行为,因此很容易绕过此示例的单例性质

(编辑:李大同)

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

    推荐文章
      热点阅读