单例设计模式(Singleton Design Pattern)是一种创建型设计模式,它确保⼀个类有且只有⼀个实例,并提供一个全局访问点来访问这个唯一实例。
单例模式主要解决的是,⼀个全局使⽤的类频繁的创建和消费,从⽽提升整体的代码性能。
思路
- 让构造方法不能被外界使用,在类内部创建对象:将构造方法修饰为private
- 把构造方法修饰为private,一个对象都不能创建了
私有的在本类中可以使用,所以在本类中创建一个对象 - 为了让外界能够获取到这个对象,需要把该对象修饰为static
但是外界可以赋不合法的数值,所以再修饰为private - 对象被修饰为private的,外界就得不到这个对象了。
所以需要提供public的方法把该对象返回。
因为外界不能创建对象,所以该方法只能是静态的。
class Single//饿汉式
{
private static Single single=new Single();
private Sing1e(){}
public static Single getInstance()
{
return single;
}
}
class Singles//懒汉式:线程不安全
{
private static Singles s;//null
private Singles(){};
public static Singles getInstance()
{
if(s==null)
s=new Singles();
return s;
}
}
class Demo9
{
public static void main(String[] args)
{
//Single s=new Single();
//Single.single=null;
Single s1=Single.getInstance();
Single s2=Single.getINstance();
System.out.println(s1==s2);
}
}
-
e.g.: 工厂加工零件,工厂实现单例
class Factory { private int num; private static Factory factory=new Factory(); private Factory(){} public static Factory getInstance() { return factory; } public void jiaGong( ) { System.out.println("这是加工的第"+(++num)+"个零件"); } class Demo10 { public static void main(String[] args) { Factory gc=Factory.getInstance(); gc.jiaGong(); gc.jiaGong(); gc.jiaGong(); gc.jiaGong(); gc.jiaGong(); Factory gc2=Factory.getInstance(); gc2.jiaGong(); gc2.jiaGong(); gc2.jiaGong(); gc2.jiaGong(); gc2.jiaGong(); } }