最近在物色新东家,闲着无聊发一下博客,小白第一篇博客 如有不对的地方希望各位大神指点一下
单例模式指在核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例
常用的单例模式有两种 一种在需要时候才去获取该实例,俗称懒汉模式,一种在程序运行时立刻创建一个实例存放在内存中,俗称饿汉模式。好俗。。
先介绍懒汉模式。上代码,不写说明了。。。
public class TestClazz{
private static TestClazz testClazz;
//将构造器私有 外界不能创建该类的实例 只能通过静态方法获取该类实例
private TestClazz(){}
//定义一个获取该类实例的 静态 方法
//实例方法只能通过当前类的实例对象调用 而构造器被私有 不能创建该类实例 不可以调用该类实例方法
//所以必须为静态方法
public static TestClazz getInstance(){
if (testClazz == null) testClazz = new TestClazz();
return testClazz;
}
}
class GetClazz{
public static void main(String[] args){
//DeBug 模式可以看出两者的内存地址是一样的
TestClazz instance = TestClazz.getInstance(); //内存地址 : TestClazz@527
TestClazz instance2 = TestClazz.getInstance();//内存地址 : TestClazz@527
}
}
第二种为饿汉模式,跟懒汉模式不一样的是该模式在程序一运行时跟静态代码块一快初始化,获取时直接获取
public class TestClazz{
private static TestClazz testClazz;
private TestClazz(){}
static
{
//直接创建该类对象 当访问该类时第一时间将该类实例创建 然后返回
//放在静态代码块中
testClazz = new TestClazz();
}
public static TestClazz getInstance(){ return testClazz; }
}
class GetClazz{
public static void main(String[] args){
//DeBug 模式可以看出两者的内存地址是一样的
TestClazz instance = TestClazz.getInstance(); //内存地址 : TestClazz@527
TestClazz instance2 = TestClazz.getInstance(); //内存地址 : TestClazz@527
}
}