【Java基础】设计模式——单例设计模式

发布于:2024-05-10 ⋅ 阅读:(18) ⋅ 点赞:(0)

单例设计模式(Singleton Design Pattern)是一种创建型设计模式,它确保⼀个类有且只有⼀个实例,并提供一个全局访问点来访问这个唯一实例。

单例模式主要解决的是,⼀个全局使⽤的类频繁的创建和消费,从⽽提升整体的代码性能。

思路

  1. 让构造方法不能被外界使用,在类内部创建对象:将构造方法修饰为private
  2. 把构造方法修饰为private,一个对象都不能创建了
    私有的在本类中可以使用,所以在本类中创建一个对象
  3. 为了让外界能够获取到这个对象,需要把该对象修饰为static
    但是外界可以赋不合法的数值,所以再修饰为private
  4. 对象被修饰为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();
        }
    }
    

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到