最近学习C#,遇到需要单例模式的地方,想起当年学习java的时候,这是最简单的一个设计模式了,于是乎回过头来看了一下java的代码,很快就明白了
单例模式是每次调用一个类的对象时, 都是调用类的同一个实例,而不是调用一次就进行一次实例化,上代码
package singleton;
public class SingleTon
{
private SingleTon()
{
}
private static SingleTon singleTon = new SingleTon();
public static SingleTon GetInstance()
{
return singleTon;
}
}
public class SingleTonTest
{
public static void main(String[] args)
{
SingleTon singleTon1 = SingleTon.GetInstance();
SingleTon singleTon2 = SingleTon.GetInstance();
System.out.println(singleTon1 == singleTon2);
}
}
其中稍微注意的几点,静态的方法中只能调用静态的属性;
public static SingleTon GetInstance()
{
return singleTon;
}
有时单例模式会在这个方法里有所调整
public static SingleTon GetInstance()
{
if(singleTon == null)
}
singleTon = new SingleTon();
{
return singleTon;
}
但是当此种方法运用在存在多线程的操作中时,有时会出现多个实例化现象,从而打破单例模式。这是由于线程的共享引起的,当时可以用上锁的方法来避免,但显然不如直接用第一种方法实现单例模式来的方便。
后记:重温了一下张龙老师的讲解感觉还挺亲切,虽然已经决定了走C#的道路,依旧支持java!!!