温故知新(思考Allocate)
组件设计的时候面临着pre-Allocate和lazy-Allocate的问题。
本质是时间和空间取舍的问题。
pre-Allocate:预先分配,在对象创建的同时创建
lazy-Allocate:缓分配,在需要的时候创建
属性:
pre-Allocate:
public class CPreAlloc
{
private object _obj;
public objcet obj
{
get {return _obj;}
}
public CPreAlloc()
{
// 创建对象时创建_obj,
_obj = new object();
}
}
对于必用的,如数据库连接对象,可以以这种方式来创建,这样的好处就是减少判断。
lazy-Allocate:
public class CLazyAlloc
{
private object _obj;
public objcet obj
{
// 使用时再创建
get {
if (null == _obj)
{
_obj = new object();
}
return _obj;
}
}
public CLazyAlloc()
{
}
}
对于非必用的属性可以采用这种方式,这样在属性多的时候可以减少很多内存空间。
本质是时间和空间取舍的问题。
pre-Allocate:预先分配,在对象创建的同时创建
lazy-Allocate:缓分配,在需要的时候创建
属性:
pre-Allocate:
public class CPreAlloc
{
private object _obj;
public objcet obj
{
get {return _obj;}
}
public CPreAlloc()
{
// 创建对象时创建_obj,
_obj = new object();
}
}
对于必用的,如数据库连接对象,可以以这种方式来创建,这样的好处就是减少判断。
lazy-Allocate:
public class CLazyAlloc
{
private object _obj;
public objcet obj
{
// 使用时再创建
get {
if (null == _obj)
{
_obj = new object();
}
return _obj;
}
}
public CLazyAlloc()
{
}
}
对于非必用的属性可以采用这种方式,这样在属性多的时候可以减少很多内存空间。
浙公网安备 33010602011771号