原生的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() { } }