问题描述
用静态方法,不但代码简单明了,而且可以省下实例化一个类的时间。但是我发现大部分框架的操作数据库的DA层都不用静态方法,顶多就是一些Help之类的工具类用几个静态方法。(省内存空间?应该不是吧,不用静态方法那个类还是放在内存中的呀,而且实例化的类中还要专门开个空间来指向这个方法的地址。防并发?静态方法中只要不用到共用变量或静态字段应该没这个问题吧?)我写的DA层都用了静态方法,被技术总监骂的很惨,但是他也给不出理由。只好向大家求助。代码例子如下:例如BUAccount类定义静态方法publicstaticDataTableGet(BaseDBConnectionmyDBConnection,stringparamID)在页面中直接BUAccount.get(*,*)来获取一行记录,现在一定要改成publicDataTableGet(BaseDBConnectionmyDBConnection,stringparamID),在页面中先BUAccountmyAccount=newBUAccount();然后再myAccount.Get(*,*)来获取。
解决方案
解决方案二:
路过,顶一下
解决方案三:
先想想DA层对象有哪些特征...再看静态方法的定义...1.静态方法用于表示不会随对象状态而变化的计算,静态方法是不与类的特定实例相关联的方法...2.静态方法不具有对类的实例的访问权限...最后再想想你该不该被骂...
解决方案四:
2楼你想说的是什么?
解决方案五:
我怎么用的数据库操作类就都是静态的呢,不是本来就应该用静态的吗看看sqlhelp类,它里面的也是静态的呀,为什么不能用静态的。
解决方案六:
lz说的是实体类...说的是实体类的静态方法...回帖要看帖...简单的说吧...实体类就不应该有方法...
解决方案七:
1.静态方法,不会经过构造函数,所以你不能通过构造函数来初始参数,你只能通过传递参数,来初始他当你有多种参数需要传递的时候,你就要不断重载他了。当然你可以用参数型的类型,不过如果参数有一定结构,就很麻烦。2.静态方法,只能访问静态变量,而静态变量是不会随类状态而变化,所以会保留上一次记录,这样就会产生意外的结果3.静态方法依赖实在太强了,调用者必须很清楚的知道方法的内部实现,他才能调用正确的方法,并给出正确参数,这对调用者实在是个负担。4.静态类会保留大量无用的数据放在内存里。(就像上面说的他保留的上一次记录,这个上一次的数据对你来说根本就是无用的)
解决方案八:
是不是可以这样理解,classBU{publicstaticvoidget(){stringstr="xxx";}}用BU.get()的执行完后str内存中不销毁。而classBU{publicvoidget(){stringstr="xxx";}}用BUb=newBU();b.get()执行完后str内存中会销毁?
解决方案九:
静态方法是不会释放内存的,每次进来都占一块内存,很快你的程序就over啦
解决方案十:
你看微软企业库里数据访问都不用静态的方法.
解决方案十一:
MARK
解决方案十二:
学习了,我也也类似问题!