缓存问题,求助

buyue__ 2014-05-07 02:53:58
public class A
{
public B b;

public A(){
//该构造函数会初始化b
this.b=new B();
}

//方法会修改b对象的一些属性
public updateB()
{
this.b.id=2;
}

}

public class B
{
public B()
{
//一堆事情要处理,很耗时间
}
public int id{get;set}
}

类A中有个B对象,而对象B每次初始化时会做很多事情,很耗时间的,我想在B第一次初始化后就缓存起来,
以后就不用再初始化了,如将A的构造函数改为
public A(){
if(缓存对象[B]==null)
{
B bb=new B();
缓存对象.add(bb);
this.b= 缓存对象[B];
}
else{
this.b= 缓存对象[B];
}
}
现在的问题是A对象中的B对象不是一成不变的,可以修改的,因为缓存对象是引用B对象的地址,那么缓存对象也被修改了,
我想在要实现的是B对象第一次初始化就存进缓存对象里,并且无论怎样修改B对象都不会影响缓存对象
...全文
361 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyue__ 2014-05-07
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
你用单例模式就行了吧,只保证创建一次
問題不是單例還是多例的問題,而是多線程時,你可以修改B引起緩存變量改變,我也可以修改B引起緩存變量改變..
bdmh 2014-05-07
  • 打赏
  • 举报
回复
你用单例模式就行了吧,只保证创建一次
wnttmk 2014-05-07
  • 打赏
  • 举报
回复
可以考虑在读取出来后实现COPY
moonwrite 2014-05-07
  • 打赏
  • 举报
回复
将B拆一拆 在B的构造函数中,把不怎么变化的独立出来,缓存起来~

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧