在不同对象之间共享对象
我遇到了一种情况,即我有一个公共参考对象正在作为参数传递给不同的操作对象。它使代码非常混乱,无法传递。 是否有任何使它像每个操作(如会话)的引用?但是,它只是一个核心代码库。使用静态类不是解决方案。在不同对象之间共享对象
谢谢
解决方案1 - 您可以使用单身。它们保证在运行代码中只有一个类的实例。
解决方案2 - 为什么不将共享引用对象作为对象的属性进行操作?这样,每个操作都可以访问它。你可以做一些奇特的事情,如引用属性为空,抛出异常等。
我明白。 IoC和amibent都是单身。我的问题将变成它是一个多用户正在使用的应用程序,我存储的对象是基于用户的信息。单身人士会给我多个用户中的同一个对象。 – 2012-02-17 18:04:21
我试过了。它不适合我。我的情况是,我有.net程序集正在使用纯ASP。该模式将面临数据泄漏到整个站点的静态线程状况。我不能使用threadstatic和callcontext,因为它不适合我的情况。 – 2012-02-22 20:55:06
对于这个,我知道的两种常用的方法:
一)使用国际奥委会和构造函数依赖于你的共享对象传递。正如你所提到的,如果这个对象被用在许多地方,这会污染界面,并且在很多情况下会增加很多混乱。
b)使用ambient context:创建一个基于接口的单例,可以由需要该对象实例的类访问。在单例中有一个允许你覆盖实例的setter(例如,用于单元测试),所以测试代码仍然是可能的。
我明白。 IoC和amibent都是单身。我的问题将变成它是一个多用户正在使用的应用程序,我存储的对象是基于用户的信息。单身人士会给我多个用户中的同一个对象。 – 2012-02-17 18:04:16
为什么不是静态类的解决方案它只是一个核心代码库? – tster 2012-02-03 17:37:20
您应该提供有关您的用例的详细信息(示例)。 – ken2k 2012-02-03 17:37:54
您可以将它作为所有函数都可以访问的全局属性,也可以使代码更简洁。如果你想要更好的东西,你应该发布一些你确切需要的示例代码 – musefan 2012-02-03 17:38:57