单例设计模式(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;//nullprivate 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();} }