温故知新(思考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()
           {
           }
   }
   对于非必用的属性可以采用这种方式,这样在属性多的时候可以减少很多内存空间。
  
  
posted on 2007-05-15 13:28  HEAVY  阅读(141)  评论(0)    收藏  举报