代码之家  ›  专栏  ›  技术社区  ›  Eduardo Xavier

我应该为DataAccess公共运算符使用静态方法吗?

  •  1
  • Eduardo Xavier  · 技术社区  · 15 年前

    我没有使用hibernate,这根本不是一个有效的选择。我开发了一个基于ADO.NET的框架。此框架对每个数据库实体都有默认运算符。

    例如,数据访问层具有如下默认运算符:

    Insert
    Update
    Delete
    Get
    GetAll
    

    要访问此方法,我们使用以下示例代码:

    DataAccess.Order daoOrder;
    
    Entity.Order entityOrder;
    DataAccess.Order daoOrder;
    
    entityOrder = new Entity.Order();
    entityOrder.ID = 1090;
    
    daoOrder = new DataAccess.Order();
    daoOrder.Insert(entityOrder);
    

    我考虑使用静态方法,因此代码很简单,如下所示:

    Entity.Order entityOrder;
    
    entityOrder = new Entity.Order();
    entityOrder.ID = 1090;
    
    DataAccess.Order.Insert(entityOrder);
    

    假设系统有30个表和30个实体。我们需要30个DataAccess对象作为静态对象运行。 这种静态结构将为我们节省一些处理器周期和内存,因为垃圾收集器的成本更低。

    我是否应该以这种方式为业务和DataAccess公共操作符使用静态方法? 你能谈谈这种方法的优点和缺点吗?(我的意思是,记忆,表现…)

    2 回复  |  直到 14 年前
        1
  •  3
  •   flesh    15 年前

    您上面提到的两个选项之间的性能差异实际上是不存在的。考虑到您的域模型和其他业务需求,我会选择您能够管理的最干净、最灵活的设计,然后在启动并运行之后再考虑性能调整;在构建系统之前,不要试图猜测瓶颈。

    static versus instance performance ..

    在调用一个方法20亿次的过程中,通过使其保持静态,您可以节省大约5毫秒的时间,这对于每个方法调用来说几乎没有节省任何东西

        2
  •  1
  •   rafek    15 年前

    如果在这个类中使用静态方法,那么与它交互的每个对象都将与它高度耦合。事实上,你的代码不是很好的测试性。如果我是你,我会避免使用静态方法/类以及单例。除非你不想试驾你的应用程序。