java主要的设计模式

一、单例模式

2018-09-17  本文已影响0人  城市里永远的学习者

1.单例模式

1.1定义:属于一种对象创建模式,能够确保系统中一个类有且只有一个实例

1.2好处:

1.2.1对于频繁使用的对象,可以省略创建对象所花费的时间

1.2.2由于new的次数减少,对内存的使用频率也降低了,减去GC压力

1.3角色

单例类和使用类

实例1:

public class SingleClass3 {

private  SingleClass3(){

System.out.println("init SingleClass3...");

    }

private  static  SingleClass3 instance=new SingleClass3();

    public synchronized static  SingleClass3 getInstance()

{

return  instance;

    }

}

假设类构造函数初始化时间较慢,则延迟加载:

public class SingleClass {

private static  SingleClass instance=null;

    private  SingleClass()

{

System.out.println("SingleClass Constructor ...");

    }

public  static synchronized SingleClass getInstance()

{

if (instance==null)

instance=new SingleClass();

            return instance;

    }

}

但因为使用了同步方法,所以在多线程情况下会变慢,虽然减少了类加载时间,但却因为同步方法导致时间变长,于是引入内部类:

public class SingleClass2 {

private  SingleClass2()

{

System.out.println("SingleClass2 Constructor ...");

    }

private  static  class  SingleHolder{

private  static SingleClass2 instance=new SingleClass2();

    }

public  static  SingleClass2 getInstance()

{

return SingleHolder.instance;

    }

}

思考:

如何理解使用内部类来实现单例模式?

静态内部类只有在被调用时才会加载,且类的加载过程是线程保护的所以不存在线程安全问题。而且这个类的实例化是在静态内部类中且使用了final修饰,只能赋值一次,static修饰随着类的加载而加载

使用:

1.配置类

2.常用注解

@Configuration:指定为配置类

@Component:

@Aspect

上一篇 下一篇

猜你喜欢

热点阅读