原生的servlet、单例多例、懒汉饿汉模式、静态内部类和枚举

1. 什么是单例多例:

单例:就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的

多例:指每个请求用一个新的对象来处理,比如action; 

2. 单例模式和多例模式说明:

  单例模式和多例模式属于对象模式。

  单例模式的对象在整个系统中只有一份,多例模式可以有多个实例。

  它们都不对外提供构造方法,即构造方法都为私有。

3. 原生的servlet:

<servlet>
	<servlet-name>DisplayChart</servlet-name>
	<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>DisplayChart</servlet-name>
	<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>

4. 单例模式举例

第一种:懒汉式(线程不安全,加上synchronized后线程安全)

public class Singleton {
    private static Singleton instance;
    private Singleton (){}

    public static synchronized  Singleton getInstance() {
    if (instance == null) {
        instance = new Singleton();
    }
    return instance;
    }
}

第二种:饿汉式(线程安全)

public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton (){}
    public static Singleton getInstance() {
    return instance;
    }
}

第三种:静态内部类

public class Singleton {
    private static class SingletonHolder {
    private static final Singleton INSTANCE = new Singleton();
    }
    private Singleton (){}
    public static final Singleton getInstance() {
    return SingletonHolder.INSTANCE;
    }
}

第四种:枚举

public enum Singleton {
    INSTANCE;
    public void whateverMethod() {
    }
}

  

原文地址:https://www.cnblogs.com/jihongtao/p/10467484.html