【设计模式】Java设计模式第二课之单例模式

单例模式是自打我知道设计模式这个名词之后,第一个听说的一个具体的设计模式.它的使用情景是有一些关键性资源只允许产生一个实例.如果有多个实例产生的话,就会对我们的实际情况产生许多干扰.

以下是我在看书的过程中总结的几个要点:

  • 确保一个类只有一个实例,并提供一个全局访问实例.
  • 在Java中实现单例模式需要一个私有的构造方法,一个静态方法和一个静态实例.
  • 确定在性能和资源上的限制,然后小心的选择适当的方案来实现单例,以解决多线程问题(我们必须认定所有的程序都是多线程的)
  • 如果使用了多个类加载器,可能导致单例失效,产生多个实例
  • 单例模式分为两种:懒汉模式和饿汉模式
  • 懒汉模式:加载类的时候比较快,但是运行时获取对象的速度比较慢,因为在创建单例类的时候没有创建类的对象.是线程不安全的.要在getInstance()方法上加上syncronized关键字,如果为了效率的话需要加上双重锁定
  • 饿汉模式:加载类的时候比较慢,但是运行时获取对象的速度比较快.因为在创建单例类的时候创建了类的对象.是线程安全的.

单例模式本身的代码量是很少的,但是代码量少并不代表它很简单,要想理解它的真正思想,还要多运用多思考.

时间: 2024-10-08 13:59:48

【设计模式】Java设计模式第二课之单例模式的相关文章

大话设计模式java版本 第二章 策略模式

package strategy; //嵌入策略 public class CashContext { private Cash cs; public CashContext(Cash cs) { super(); this.cs = cs; } public double getResult(double money){ return cs.acceptCash(money); } } package strategy; public interface Cash { public abstr

java web 第二课javascript

一.javascript概述: 1.javascript:客户端脚本语言 What:运行在浏览器上,纯文本的内容 Why:可以给网页添加交互功能,省事,省时间,省流量 交互:获取页面数据--浏览器处理数据--浏览器返回处理结果提示信息. 特点:类java和c对语法 自上向下解释执行 使用文本编写,直接嵌入HTML中执行 2.Javascript应用场景: 表单验证:客户端数据计算:特效动画 3.first javascript: 1).事件中:鼠标在浏览器中触发的操作: 如:单击,焦点转移,鼠标

Java反射第二课 动态加载类

在第一节课中我们讲的第三种方法 Class.forName("类的全称"); 不仅表示了类的类类型,还代表了动态加载类 请大家区分编译,运行 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 现在的开发工具比如eclipse把编译过程给隐藏了 下面做一个实验 比如用记事本编写下面的Office.java文件 class Office { public static void main(String[] args) { if(("Word").equals(ar

Unity设计模式+Java设计模式,讲解+案例+PPT,一次性学会设计模式,拥抱高薪!

一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂”就在于它是要构造一个“万能钥匙”,目的是提出一种对所有锁的开锁方案.在真正理解设计模式之前我一直在编写“简单”的代码.这个“简单”不是功能的简单,而是设计的简单.简单的设计意味着缺少灵活性,代码很钢硬,只在这个项目里有用,拿到其它的项目中就是垃圾,

java程序设计第二课

抽象基类和接口 能够使用keywordabstact来创建抽象类,该抽象类不能被实例化 也能够使用keywordabstact来描写叙述一个尚未被详细实现的方法,该方法不能包括方法体 一个抽象方法仅仅能在抽象类中创建,当该类被继承时,抽象方法必须有详细实现,或者继承类声明为抽像类 interfacekeyword比abstact类更进一步,不同意有方法定义 接口提供了接口与实现完美分离,java不支持多继承,但能够通过实现多个接口来达到这一目的. C++把对象置于堆栈或静态存储区 java提供被

简单工厂设计模式--Java设计模式(一)

一 概念: 简单工厂模式就是通过一个工厂类根据参数动态创建对应的类. 二 案例 我们以汽车作为例子,在现实生活中汽车只是一个抽象的产品,其中有很多类型的汽车才是具体产品,如奔驰.宝马.保时捷等等(当然每个品牌下还有各种版本,这就不做讨论了,假设每个品牌就对应一种车).简单类图如下: 当我们去综合类型的店买车要试开车时,销售员可能最简单直接的方法就是直接拿出他们最畅销的车子出来让你试驾.简易代码如下: public class CarTest { public static void main(S

Java设计模式知识整理

1.Java设计模式     Java设计模式分为三种类型,分别是:      ①.创建型设计模式:是对对象创建过程的各种问题和解决方案的总结           包括:静态工厂模式.抽象工厂模式.单例模式.构建器模式.原型模式     ②.结构型设计模式:是针对软件设计结构的总结           包括:装饰器模式.适配器模式.代理模式.桥接模式.组合模式.外观模式.享元模式     ③.行为型设计模式:是从类或者对象之间交互.责任划分等角度的总结           包括:策略模式.解释器

折腾Java设计模式之中介者模式

博文原址:折腾Java设计模式之中介者模式 中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. 通俗点来讲就是提供一个中介平台,说到平台,那其实很容易联系到我们很熟悉的房地产中介.我们可以直接通过这个平台得到我们想要的信息,不用对象自身与其他对象交互. 买房子租房子就不需要去找房东,只需要在中介那里获取相应的×××信息.如下图那样,两方只

Java设计模式学习笔记,一:单例模式

开始学习Java的设计模式,因为做了很多年C语言,所以语言基础的学习很快,但是面向过程向面向对象的编程思想的转变还是需要耗费很多的代码量的.所有希望通过设计模式的学习,能更深入的学习. 把学习过程中的笔记,记录下来,只记干货. 第一部分:单例模式的内容 单例模式:类只能有一个实例. 类的特点:1.私有构造器:2.内部构造实例对象:3.对外提供获取唯一实例的public方法. 常见的单例模式实现有五种形式: 1.饿汉式. 2.懒汉式. 3.双重检查锁式. 4.静态内部类式. 5.枚举式. 以下分别