常用设计模式之单例

  • Code

 1 // 饿汉式
 2 public class Singleton{
 3 private Singleton(){}
 4 private static final Singleton instance = new Singleton();
 5 public static Singleton getInstance(){
 6     return instance ;
 7 }
 8 }
 9 // 静态代码块
10  public class Singleton {
11       private Singleton instance = null;
12       static {
13            instance = new Singleton();
14      }
15       private Singleton (){}
16       public static Singleton getInstance() {
17          return this.instance;
18        }
19 }
20
21 // 懒汉式 在getInstance方法上加同步
22 public class Singleton {
23     private Singleton() {}
24     private static Singleton single=null;
25     public static synchronized Singleton getInstance() {
26          if (single == null) {
27              single = new Singleton();
28          }
29         return single;
30     }
31 }
32 // 懒汉式 双重检查锁定
33 public class Singleton {
34     private Singleton() {}
35     private static Singleton single=null;
36     public static Singleton getInstance() {
37         if (singleton == null) {
38             synchronized (Singleton.class) {
39                if (singleton == null) {
40                   singleton = new Singleton();
41                }
42             }
43         }
44         return singleton;
45     }
46 }
47 // 静态内部类
48 public class Singleton {
49     private static class LazyHolder {
50        private static final Singleton INSTANCE = new Singleton();
51     }
52     private Singleton (){}
53     public static final Singleton getInstance() {
54        return LazyHolder.INSTANCE;
55     }
56 } 

参考:

http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html

时间: 2024-10-10 17:22:14

常用设计模式之单例的相关文章

常用设计模式(单例,代理,工厂,观察者)

单例:线程池.任务管理器. 1.饿汉模式:类加载时就创建好单例对象,调用静态方法返回单例对象,不需要考虑多线程问题. class Singleton{ private static singleInstance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return singleInstance; } } 2.懒汉模式:在调用方法时再创建单例对象 class Singleton{

iOS 设计模式之单例

设计模式:单例 一.  单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 单例模式的要点有三个:一是某个类只能有一个实例,二是它必须自行创建这个实例,三是它必须自行向整个系统提供这个实例. 二.单例模式结构图: 三. 单例的好处: 1.实例控制:单例模式会阻止其他对象实例化其自己的单例对象

设计模式总纲——单例设计模式

前两天写了设计模式总纲,今天就来讲讲我们在工程代码中最最最常用的设计模式了——单例设计模式,这个模式在工程代码上的出现率几乎为99.99999%,但是虽然很常用,但是用的好的人却不多,今天我们就来深入的说一说单例设计模式. 在学习一项新的知识之前,我们都要向自己提出三个问题,为什么要用这个知识,这个知识用在哪里,这个知识怎么用?既 why,where,how,3W模式,我们先来谈谈为什么需要单例设计模式,先来想想,如果一个工具类,比如一个读取配置文件的工具类,这类工具只是特定的功能类,既读取指定

OC中的单例设计模式及单例的宏抽取

1 // 在一个对象需要重复使用,并且很频繁时,可以对对象使用单例设计模式 2 // 单例的设计其实就是多alloc内部的allocWithZone下手,重写该方法 3 4 #pragma Person.h文件 5 6 #import <Foundation/Foundation.h> 7 @interface Person : NSObject <NSCopying,NSMutableCopying> 8 + (instancetype)sharePerson; // 给类提供一

设计模式 之 单例

单例模式(Singleton Pattern) 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 最近一直在用VB.NET重构机房收费系统,在重构中就出现了一个这样的问题: 每点击一次充值的菜单,都会出现一个新的充值窗体.我就希望它要么不出现,出现也只出现一个.这个就和我们今天讲的单例模式有关系了. 大家都知道,世界上的所有事物都是独一无二的,也就是说没有哪两个事物是完全相同的.从这个角度来讲,每一个事物相对于自身都是单例的.我们今天所讲的单例设计模式则有所区别,它是针对某一类事物来说,只

java设计模式之单例设计模式

设计模式:解决某一类问题最行之有效的方法. java中23种设计模式. 单例设计模式:解决一类在内存中只存在一个对象. Runtime()方法就是单例设计模式进行设计的. 解决的问题:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的. 1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象. 2.还为了让其他程序可以访问该类对象,只好在本类中自定

设计模式之-----------单例设计模式

饿汉式: class Single { //   提前做好! private static final Single s = new Single(); //  私有化 构造函数  无法使用new 创建对象! private Single(){} //  对外提供接口 public static Single getInstance() { return s; } } 懒汉式: 懒汉 顾名思义  就是懒呗 什么时候用到 什么时候创建! class Single1 { private static

java软件设计模式只单例设计模式

概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 设计模式分为三种类型,共23种.创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式.结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式.

【设计模式】单例设计模式的N中Java实现方法

特点 单例模式的特点: 1.只能有一个实例: 2.必须自己创建自己的一个实例: 3.必须给所有其他对象提供这一实例. 饿汉式单例模式 也称为预先加载法,实现方式如下: [java] view plaincopy class Single { private Single()( Syustem.out.println("ok"); ) private static Single instance = new Single(); public static Single getInstan