原标题:java中的单例和多例
1.单例和多例的概念
单例模式:对于所有的请求都用同一个对象去处理
具体的实现:既然所有请求都用同一个对象处理,那么这个类的构造函数必须私有化之后别的类无法创建该类的实例。别的类无法创建该类的实例那么该类就需要自行创建自己的实例并且向系统提供这个实例用public static修饰这个对象。
懒汉式:当一个单例模式的类进行加载的时候并不会创建这个这个对象。只有当用到这个类的时候才会去创建这个对象。
饿汉式:当类加载的时候直接创建这个对象,不管是否会用到。
多例模式:每个请求都用新的对象去处理
特点:多例类可以创建多个实例。多例模式的类必须自己创建并且管理自己的实例,向系统提供自己的实例。也就是在类的内部创建多个类的对象,用不同的对象去处理请求。所以我们也可以说单例就是多例模式的一种特殊情况。
2.单例和多例模式的优缺点
单例:同一个对象处理请求,减少了内存的消耗。但是在饿汉式的单例类中要注意线程安全问题。因为饿汉式在类加载时就会将单例对象创建好,而饿汉式在类加载时不会第一时间创建这个对象。所以在线程并发的情况下可能会创建多个不同的对象。
多例:会占用较多的内存,但是不会发生线程安全问题。当多个线程争抢同一资源时会发生线程安全问题。
3.单例和多例的应用
单例:三层架构的service层和dao层,因为在他们中都没有可变的属性。
多例:Struts框架的action类因为每个用户都有不同的用户名密码等等所以需要用多例模式。
责任编辑: