静态方法和单件模式具体区别在哪里 ?
http://community.csdn.net/Expert/topic/3300/3300427.xml?temp=.4662287
看了上面那位大哥的帖子以后,我也有点疑问 。
对于我的数据访问类如下 :
public class DBConst
{
public DBConst()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public DataView select_const(string strComm)
{
SqlConnection myConn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]);
SqlDataAdapter myCommand=new SqlDataAdapter(strComm ,myConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "const");
return ds.Tables["const"].DefaultView;
}
}
对于这样的类 ,设计成工具类是不是更好 ?因为它并没有涉及到类的数据成员 ,那么设计成静态方法不是更好吗 ? 设计成静态方法就不用实例化 DBConst 类就可以调用数据访问方法select_const ( ) 了 。如果把上面的类不设计成静态方法 ,而是设计成单件模式 ,和上面的设计方法比较 ,那一种更好 ?
另:
对于 SqlConnection myConn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]);
这样的数据库连接操作 ,ADO.net 是自动的把连接放入到连接缓冲池中的 ,那么我如果连续执行select / update 等操作 ,每一个操作都要连接一次相同数据库 ,那么对于已经放到连接缓冲池中的连接 ,我要耗费的时间和资源还多吗 ?是不是要注意 ? 是不是最好把所有的select / update 等操作放到数据库存储过程中呢 ?(不是太想放到数据库存储过程中)
http://community.csdn.net/Expert/topic/3300/3300427.xml?temp=.4662287
看了上面那位大哥的帖子以后,我也有点疑问 。
对于我的数据访问类如下 :
public class DBConst
{
public DBConst()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public DataView select_const(string strComm)
{
SqlConnection myConn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]);
SqlDataAdapter myCommand=new SqlDataAdapter(strComm ,myConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "const");
return ds.Tables["const"].DefaultView;
}
}
对于这样的类 ,设计成工具类是不是更好 ?因为它并没有涉及到类的数据成员 ,那么设计成静态方法不是更好吗 ? 设计成静态方法就不用实例化 DBConst 类就可以调用数据访问方法select_const ( ) 了 。如果把上面的类不设计成静态方法 ,而是设计成单件模式 ,和上面的设计方法比较 ,那一种更好 ?
另:
对于 SqlConnection myConn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionString"]);
这样的数据库连接操作 ,ADO.net 是自动的把连接放入到连接缓冲池中的 ,那么我如果连续执行select / update 等操作 ,每一个操作都要连接一次相同数据库 ,那么对于已经放到连接缓冲池中的连接 ,我要耗费的时间和资源还多吗 ?是不是要注意 ? 是不是最好把所有的select / update 等操作放到数据库存储过程中呢 ?(不是太想放到数据库存储过程中)
解决方案 »
- access数据库删除无限级分类语句怎么写?
- 怎么也想不明白了。。。
- 急急急!!伪静态发布IIS后访问问题,Help...
- 记录客户端的浏览器情况
- 怎样才能编译asp.net项目中的单个文件?
- 访问权限实现问题?
- 请问各位大侠??关于dropdownlist这个问题
- 谁知道msn的共享空间中,文件上传是怎样实现的
- 为何,为何,datagrid中的值只有在datagrid的事件中得到吗???---waiting
- SQL server中,如何选出不重复的数据,distinct两列以上的不行呢?高手请进,再线等待!
- 讨论!这样做的程序算是面向对象的开发吗?(回复有分哦!)
- 注册表大问题,小弟用asp.net+C# 写了一个从web写入注册表程序,为什么出现错误,说我没有权限,具体如下
2.单例(Singleton)类模式2.1单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。单例是一个非常简单的模式,说白了就是在某个范围内(通常是内存)保持一个类的唯一的一个实例,作用保持实例的唯一性,常用类可防止频繁的new操作,比如全局配制类,Log等。Q: 如果用Singleton的话,对象永远只有一个,那如果是WEB程序,自然可能会承受很大的并发,这时候怎么处理?全部对这个对象操作?那不很容易乱套?如果锁上,就全部排队?是不是很不合适呢?
RE: 模式是用来解决特定问题的,如果会产生并发问题,自然不应该用。Q: 静态方法和Singleton模式的区别 ?静态方法的设计原则,其实很简单,如果方法本身与实例无关。静态方法不属于对象,也就不是面对对象的设计了,一个类全是静态方法,还不如不设计这个类。单件模式的实例销毁时可以释放所有的非静态方法和数据,,如果把这个类的所有方法都设计为静态的,这些方法将一直占用内存,浪费资源,不可取。
我们的数据库连接字符串就是一个组件 ?
怎么设计啊 ? 能不能详细讲讲 ?
象楼主设计的那样的数据库访问类 ,好象不用实例化也可以作到想要的作用啊 ,而且设计成静态的方法省去了每次的实例化过程 。
复杂的可以试试看NHibernate