[设计模式]暂时不考虑多线程的单例模式

饿汉式单例模式:

 1 package cn.itcast.singleton;
 2     /*
 3     最简单的设计模式就是单例模式
 4     单个实例的模式,一个类只能生成一个对象,
 5     new或者其他方式最后只能生成一个对象,不能再生成新的对象.
 6     */
 7 public class SingletonTest {
 8     public static void main(String[] args) {
 9         Singleton singleton = Singleton.getInstance();
10         Singleton singleton2 = Singleton.getInstance();
11         //判断生成的对象是否是一个对象.
12         System.out.println(singleton==singleton2);
13     }
14 }
15 class Singleton{
16     //在Singleton类中声明一个对象.然后在类中向外提供一个得到这个对象的方法
17     //下面的getInstance()方法是static类型的.要调用的也必须是static类型的.
18     private static Singleton singleton = new Singleton();
19
20     //单例类Singleton中的构造方法必须是private,不能让外部访问该构造方法.否则无法实现单例模式
21     private Singleton(){
22
23     }
24     //这个getInstance()方法必须是static静态的方法,因为这个方法是一个实例方法.
25     //外部调用实例方法通过该类的对象来调用,但是外部因为该类的构造方法是private的无法得到该类对象
26     //所以要声明成static静态的方法,通过类名来调用这个实例方法.
27     public static Singleton getInstance(){
28         return singleton;
29     }
30 }
31     /*
32     这种方式(饿汉式)是你在你没有调用Singleton的时候也生成一个singleton对象了.
33     这种是一定是单例的,第二种(懒汉式)在多线程的情况下可能不是单例的.
34     */

懒汉式单例模式

 1 package cn.itcast.singleton2;
 2     /*
 3     最简单的设计模式就是单例模式
 4     单个实例的模式,一个类只能生成一个对象,
 5     new或者其他方式最后只能生成一个对象,不能再生成新的对象.
 6     */
 7 public class SingletonTest {
 8     public static void main(String[] args) {
 9         Singleton singleton = Singleton.getInstance();
10         Singleton singleton2 = Singleton.getInstance();
11         //判断生成的对象是否是一个对象.
12         System.out.println(singleton==singleton2);
13     }
14 }
15 class Singleton{
16     //在Singleton类中声明一个对象.然后在类中向外提供一个得到这个对象的方法
17     //下面的getInstance()方法是static类型的.要调用的也必须是static类型的.
18     private static Singleton singleton;
19     //这个地方先不赋值,不赋值肯定不对,就要在你调用getInstance()方法的时候判断这个singleton对象是否为空.
20
21     //单例类Singleton中的构造方法必须是private,不能让外部访问该构造方法.否则无法实现单例模式
22     private Singleton(){
23
24     }
25     //这个getInstance()方法必须是static静态的方法,因为这个方法是一个实例方法.
26     //外部调用实例方法通过该类的对象来调用,但是外部因为该类的构造方法是private的无法得到该类对象
27     //所以要声明成static静态的方法,通过类名来调用这个实例方法.
28     public static Singleton getInstance(){
29         if(singleton == null){
30             singleton = new Singleton();
31         }
32         return singleton;
33     }
34 }

============================华丽丽的分割线====================================

时间: 2024-10-07 16:26:54

[设计模式]暂时不考虑多线程的单例模式的相关文章

iOS多线程技术—单例模式(ARC)与(MRC)

iOS多线程技术—单例模式(ARC) 一.简单说明: 设计模式:多年软件开发,总结出来的一套经验.方法和工具 java中有23种设计模式,在ios中最常用的是单例模式和代理模式. 二.单例模式说明 (1)单例模式的作用 :可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源. (2)单例模式的使用场合:在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次),应该让这个类创建出来的对象永远只有一个. (3)单例模式在ARC\MRC环

iOS开发多线程篇—单例模式(ARC) - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3808641.html iOS开发多线程篇—单例模式(ARC) 一.简单说明: 设计模式:多年软件开发,总结出来的一套经验.方法和工具 java中有23种设计模式,在ios中最常用的是单例模式和代理模式. 二.单例模式说明 (1)单例模式的作用 :可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源. (2)单例模式的使用场合:在整个应用程序中,共享一份资

iOS开发多线程篇—单例模式(ARC)

iOS开发多线程篇—单例模式(ARC) - 文顶顶 原文  http://www.cnblogs.com/wendingding/p/3808641.html iOS开发多线程篇—单例模式(ARC) 一.简单说明: 设计模式:多年软件开发,总结出来的一套经验.方法和工具 java中有23种设计模式,在ios中最常用的是单例模式和代理模式. 二.单例模式说明 (1)单例模式的作用 :可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源. (

IOS设计模式之一(MVC模式,单例模式)

本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq)翻译,如果你发现有什么翻译错误,请与我联系谢谢. iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不会太关注它. 在软件设计领域,设计模式是对通用问题

iOS开发多线程篇—单例模式(MRC)

iOS开发多线程篇—单例模式(MRC)  一.非ARC模式下的单例模式 1.说明:把一个项目修改为非ARC的 2.MAC下单例模式代码示例: 新建一个工具类,让该类继承自NSObject. YYAudioTool.m文件 1 // 2 // YYAudioTool.m 3 // 06-单例模式1 4 // 5 // Created by apple on 14-6-25. 6 // Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

JAVA_多线程_单例模式

这篇是入职之后的第二篇了,上一篇我简单介绍了一下LOCK里面的类的方法,感兴趣的话可以去了解一下,以后坚持每周至少会更新一篇关于多线程方面的文章,希望博友们可以一起加油成长. 这篇主要的内容是单例模式在多线程环境下的设计,这篇算是比较重要的内容,我会进行文字和代码的共同说明来讲解记录 1.立即加载(饿汉模式) 说到标题,有人会说什么是立即加载呢?立即加载就是使用类的时候已经将对象创建完毕了,比如说直接new实例化对象.也就是在调用方法之前,实例已经被创建了 public class MyObje

【设计模式】创建型模式之单例模式(三)

单例模式 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,应用该模式的一个类只有一个实例.即一个类只有一个对象实例. 简单的理解:保证这一个类仅有一个实例,并提供一个访问它的全局访问点. 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象.一个最好的办法就是,让类自身负责保存它的唯一实例.这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法. 实现思路 将该类的构造方法定义为私有方法,这样其

这个秋季过关斩将—设计模式,分布式,多线程(文末有彩蛋)

一.前言 今天为什么要谈论这个话题昵?想必大家都知道了,又到一年的中跳槽季了,肯定有一些小伙伴寂寞难耐,想出去搞事情了.在此,我抛出三个词,这三词应该归属面试最热词的范畴了,这是我自身体会及从各个同行公认的.下面我简单概述一下,希望对大伙有所帮助. 二.设计模式 概念 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性.设计模式使代码编写真正工程化:设计模式是软件工