Singleton模式和Monostate模式都是强制对象单一性的模式。有时会认为强制对象单一性的机制似乎是多余的,但是如果这种机制是轻量级的,那么传达意图带来的收益就会胜过实施这些机制的代价。
Singleton模式最常见的用法如下,使用私有构造函数,一个静态变量,以及一个静态方法对实例化进行控制和限制。如果想保证线程安全,可以再加上lock。
public class Singleton
{
private static Singleton theInstance = null;
private Singleton() { }
public static Singleton Instance
{
get
{
if (theInstance == null)
theInstance = new Singleton();
return theInstance;
}
}
}
我们可以看到static的Instance对象只会被创建一次。Singleton模式应用在很多地方,比如创建应用程序的根对象、数据库连接的唯一实例等。如果希望透过派生类去约束一个现存类,并且不介意它的所有调用者都必须调用Instance()方法来获取访问权,那么用Singleton模式是很合适的
Monostate模式简单的把对象中的所有变量都变成静态的。Monostate模式不知道有没有太大的实用性,在实际的使用中还没有碰到过。这里就仅作了解吧。
Singleton模式最常见的用法如下,使用私有构造函数,一个静态变量,以及一个静态方法对实例化进行控制和限制。如果想保证线程安全,可以再加上lock。
public class Singleton
{
private static Singleton theInstance = null;
private Singleton() { }
public static Singleton Instance
{
get
{
if (theInstance == null)
theInstance = new Singleton();
return theInstance;
}
}
}
我们可以看到static的Instance对象只会被创建一次。Singleton模式应用在很多地方,比如创建应用程序的根对象、数据库连接的唯一实例等。如果希望透过派生类去约束一个现存类,并且不介意它的所有调用者都必须调用Instance()方法来获取访问权,那么用Singleton模式是很合适的
Monostate模式简单的把对象中的所有变量都变成静态的。Monostate模式不知道有没有太大的实用性,在实际的使用中还没有碰到过。这里就仅作了解吧。