单例模式(设计模式1)

核心作用:

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

电脑的管理器,一旦创建一个一个任务管理器,再去创建还是原来的。

一、单例模式:饿汉式。

饿汉式:不管创建多少个对象都是同一个对象

二、懒汉式:具有延时加载。加入同步,调用效率低。

三、双重检测锁:由于编译器优化和JVM底层内部模型会有问题,偶尔会出问题

      不建议使用。

四:静态内部类模式  

优点:1线程安全,2调用效率高,3具有懒加载

/**
* 外部类没有static属性,不会像饿汉式那样立即加载对象
* 只有真正的调用getInstance(),才会加载静态内部类加载雷士是线程安全,instance
*是static final类型保证了内存中只有一个这样的实例,而且只能被赋值一次,从而保证了线程安全
*兼备了并发高效调用和延时加载的优势。
* */

五、枚举式单例模式

时间: 2024-10-14 04:16:18

单例模式(设计模式1)的相关文章

iOS 单例模式 (设计模式一)

单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 主要优点: 提供了对唯一实例的受控访问. 由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能. 允许可变数目的实例. 主要缺点: 由于单利模式中没有抽象层,因此单例类的扩展有

设计模式(五) 单例模式(Singleton)

1.定义 单例模式是一种创建型的设计模式.单例模式意在保证一个类仅有一个实例,并且提供一个全局的访问点. 2.适用性 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时 一个国家只有一个主席/总统,一个人只有一个名字/身份证号,这些都是单例的例子.稍微实际点的例子就是,在某个服务器程序中,将服务器的配置信息存放在一个文件中,这些配置数据有一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例

设计模式学习系列——单例模式

单例模式 单例模式(Singleton Pattern),在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例.即一个类只有一个对象实例. 优点:1)在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如首页页面缓存). 2)避免对资源的多重占用(比如写文件操作). 缺点:违背了"单一职责原则",该类既是工厂又是产品(自己创建了自己): 从具体实现角度来说,就是以下三点: 一是单例模式的类只提供私有的构造函数, 二

基础学习day06---面向对象二---static,类的初始化和调用顺序、单例模式

一.static关键字 1.1.static关键字 静态:static用法:是一个修饰符,用于修饰成员(成员变量,成员函数)static 修饰的内容,所有对象共享当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以被类名.静态成员 package com.day06; /** * 人类 * @author Administrator *静态:static *用法:是一个修饰符,用于修饰成员(成员变量,成员函数) *static 修饰的内容,所有对象共享 *当成员被静态修饰后,就多

单例设计模式懒汉式的缺陷

http://icyfenix.iteye.com/blog/575052 IcyFenix 探索设计模式之六——单例模式 设计模式Spring应用服务器多线程JVM 6.单例模式(Singleton Pattern) 前面说提到的五种创建模式,主要解决的问题是如何创建对象,获得产品.而单例模式最要关心的则是对象创建的次数以及何时被创建. Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图).但是如果在“对象创建的次数以及何时被创建”这两点上较真起来,S

Python - 面对对象(其他相关,异常处理,反射,单例模式,等..)

目录 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 二.issubclass(sub, super) 三.异常处理 1. 异常处理 2.异常种类 3.异常其他结构 4.主动触发异常 5.自定义异常 6.断言 四.反射 五. 单例模式 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 class Foo(object): pass ob

转:单例模式

参考: 单例模式-维基百科 JavaScript 设计模式之单例模式 JS设计模式一:单例模式 设计模式——单例模式 1. 概念 下面是维基百科对单例模式的介绍: 单例模式,也叫单子模式,是一种常用的软件设计模式. 在应用这个模式时,单例对象的类必须保证只有一个实例存在. 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为. 比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配

面试笔试总结(一)之 C++基础

C++ 1.智能指针 内存管理 垃圾回收 指针问题 资源管理(内存就是资源) 可以通过引用计数的机制...实现内存回收,不要让内存泄漏. 涉及到内存的泄露的问题: 当创建一个对象的时候(new)而在对象使用完毕,没有delete就会发生内存泄漏. 或者有很多指针指向同一块内存,当有一个使用完毕delete了,剩下的指针就会无处可指 循环引用导致的指针泄漏 很多人会忘记,这时候智能指针就派上用处了,可以帮助程序员自动在析构函数中释放.两个类: 第一个问题想法:同归于尽smartPointer中的指

andorid 全部对话框

.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&qu

高级类特性----static关键字

static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用. 我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量. class Circle { private double radius