美文网首页
创建性模式-单例模式&多例模式

创建性模式-单例模式&多例模式

作者: 查无此人_chazz | 来源:发表于2018-05-13 15:01 被阅读0次

标签(空格分隔): 单例模式 多例模式 饿汉模式 懒汉模式 双检锁


单例模式定义:

保证一个类只有一个实例,并提供一个访问它的全局访问点

若显式的定义构造方法,则系统默认的构造方法就会失效。
所以只需要将这个构造方法定义为私有方法,同时让类自身负责保存它自己的一个实例,这样这个类可以保证无法创建其他实例即可
单例模式需要注意:需要防止在多线程的情况下多个实例同时调用单例类导致生成多个对象的问题
解决方法:
1、懒汉模式 需要实例的时候判断实例是否被初始化,若没有则初始化实例并返回:
懒汉模式需要考虑多线程问题,可以通过加锁解决

懒汉模式

双检锁(双重校验锁):第一个线程在判断newInstance==null时,还没有new出实例时,第二个线程也进来,判断的newInstance也是null,然后也会new出实例,这就不是我们想要的单例模式了,所以就需要加锁,使用synchronized关键字,加锁更能解决安全问题,但加锁同时也会出现一个问题,那就是每次都需要判断锁,导致性能降低。加上双重判断既能解决多线程导致的初始多个实例的问题,也防止了每次访问这个类的时候都需要加锁导致性能降低的问题;
双检锁在一定程度上实现了线程安全且在多线程情况下能保持高性能

2、饿汉模式 将初始化实例的操作作为静态化方法,在类被加载的时候无论需不需要该实例,都将其初始化:

饿汉模式

饿汉模式中,初始化变量的时候最好加上final关键字,将地址锁定保存是唯一的一个对象,更为严谨。

优点: 1、将创建对象的过程隐藏起来,由自己依照特定的规则创建实例,并对创建出来的实例直接负责和管理,2、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 3、确保不同调用者可以获得的是同一个实例,保证数据一致性。


与单例模式相类似,还有多例模式
多例模式:在多例模式中,多例类可以同时拥有有限个实例,但是这些实例必须由多例类自己创建和管理,并通过特定的方法对外提供自己的实例,外界只拥有使用的权利。

多例模式可以认为是一种特殊的单例状态,可以看作这个单例被创建了多次且能实现对这些实例的管理

优点: 1、将创建对象的过程隐藏起来,由自己依照特定的规则创建实例,并对创建出来的实例直接负责和管理。2、多例模式还可以实现实例的重复利用,一旦调用者将调用的实例释放出来,这个实例就可以被转给其他的调用者继续使用,减少内存开销,避免频繁的创建和销毁实例。

多例模式常见于各种数据库连接池、线程池等相关组件中。

相关文章

  • 目录(持续更新)

    一、创建性模式(对象模式) 创建性模式-工厂创建性模式-建造者模式创建性模式-单例模式&多例模式创建性模式-原型模...

  • 创建性模式-单例模式&多例模式

    标签(空格分隔): 单例模式 多例模式 饿汉模式 懒汉模式 双检锁 单例模式定义: 保证一个类只有一个实例,并提供...

  • 24种设计模式之多例模式(Multition Pattern)

    单例模式和多例模式说明: 1. 单例模式和多例模式属于对象模式。 2. 单例模式的对象在整个系统中只有一份,多例模...

  • Spring详解(二) 简单配置bean

    配置applicationContext.xml为单例模式,多例模式,以及延迟初始化等 同时配置了单例或多例模式,...

  • Ⅰ.Spring

    一、简介 二、IOC 2.1 工厂模式 此工厂模式仍存在问题,每次执行都会创建新的对象,即多例模式。单例模式:执行...

  • 【Spring MVC】controller之单例模式

    controller 是单例模式还是多例模式 springmvc controller默认的是单例singleto...

  • 第十七章 多例模式(Multition)

    一、多例模式是单例模式的推广,特点: 多例类可有多个实例 多例类必须自己创建、管理自己的实例,并向外界提供自己的实...

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • Java设计模式之多例设计模式

    多例设计模式是单例模式的拓展,单例模式是只保留一个类的实例化对象,而多例模式是定义了多个对象。是有限个数对象的。 ...

  • 设计模式简介

    分类 创建型模式:单例模式、工厂方法模式、抽象工厂模式、创建者模式、原型模式。 结构性模式:适配器模式、桥接模式、...

网友评论

      本文标题:创建性模式-单例模式&多例模式

      本文链接:https://www.haomeiwen.com/subject/gzrldftx.html