关于网友提出的“正比例和反比例的意义 什么样的情况下使用静态和单例”问题疑问,本网通过在网上对“正比例和反比例的意义 什么样的情况下使用静态和单例”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:正比例和反比例的意义 什么样的情况下使用静态和单例
描述: 什么样的情况下使用静态和单例
比如dal和bll层可以用吗
静态和单例有什么区别
解决方案1: 静态是始终存在在程序进程中,可直接调用而不必建新实例
比如一个类Class,里面有一个方法是静态方法static Method(),那你调用时无需Class c = new Class(),而是直接Class.Method()就可以调用该方法
单例是只允许一个线程调用方法的一种模式
假如Method()方法中需对数据库做多步修改.那么为防止并发出错就必须规定同一时间只能允许一个用户调用该方法
总的来说,静态和单例不在同一个层面,不应放在一起比较.
解决方案2: 当你的一个类 在整个应用中需要有且仅有一个实例的时候,使用单例。
需求: 一个类 在整个应用中需要有且仅有一个实例
1。有且仅有一个实例,说明不运行谁谁都能new一个实例出来,所以把构造函数给private了
2。要保证那个有且仅有的一个实例能够被外部使用,所以需要一个public的东西把这个实例公开出去,比如public的属性或者方法
3。任何人任何时间地点都要能调2中提到的方法或者属性,所以我们需要一个静态的属性或者方法。
4。仍然是“有且仅有一个实例”,我们可以在类内部的方法或属性上去构造一个实例(2,3中提到的方法或属性)
5。如果能够判断一下这个实例已经存在了,我们就不要再重复构造新的了,就使用原来已经存在的。
6。考虑一下线程安全的问题。
demo:
public class ClassA{
private static ClassA instance = null;
private readonly object _lock = new object();
private ClassA(){}
public ClassAInstance {
get{
if(instance == null){
lock(_lock){
if(instance == null){
instance = new ClassA();
}
}
}
return instance
}
}
}
解决方案3: 静态的我就不说了.我说一下单例
首先你要知道单例的特性是什么.
他是:保证一个类仅有一个实例,并提供一个访问它的全局访问点
也就是说只返回唯一的一个实例.
什么时候用呢?
当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时
解决方案4: 举一个具体的静态数据的例子:
一个天气预报的网页,用一个静态变量存储温度,而不是每次都从数据库中取,提高效率。
解决方案5: 当你想调用一个类中的方法,但是不想手动实例化类,那你就静态
比如dal和bll层可以用吗?
BLL层当然可以用,dal层,也可以用,只是一般都不这么去用
解决方案6: 打个比方,就像是建筑材料(包括各种预制件)和猪圈的区别,你可以使用某种建筑材料来构造猪圈,但是难以把建筑材料和猪圈放到一起去比较。
解决方案7:
static是.net中的关键字,有着准确国有的底层机制。而.net没有什么“单例”这种玩意。换句话说,“单例”是你自己用.net再来实现某个编程概念,而不是.net准确固有的机制。
以上介绍了“正比例和反比例的意义 什么样的情况下使用静态和单例”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2871855.html