单例的设计模式代码演示

1、饿汉式

 1 package com.wisezone.singleton02;
 2 /**
 3  * java中有23种对象设计模式
 4  * 单例设计模式:解决一个类中只存在一个对象
 5  * @author 王东海
 6  * @date. 2016年8月30日
 7  * @version v1.0
 8  */
 9 //饿汉式:先初始化对象。
10 public class Singleton
11 {
12     //private的构造器,不能在类的外部创建该类的对象
13     private Singleton()
14     {
15
16     }
17
18     //私有的,只能在类的内部访问
19     private static Singleton s = new Singleton();
20
21     //getInstance()为static,不用创建对象即可访问
22     public static Singleton getInstance()
23     {
24         return s;
25     }
26 }

2、懒汉式

 1 package com.wisezone.singleton02;
 2
 3 //懒汉式:对象是放在调用时,才初始化,也称为对象的延时加载
 4 public class Singleton2
 5 {
 6     //1.将构造器私有化,保证在此类的外部,不能调用本类的构造器。
 7     private Singleton2()
 8     {
 9
10     }
11     //2.先声明类的引用
12     //4.也需要配合static的方法,用static修饰此类的引用。
13     private static Singleton2 ss = null;
14
15     //3.设置公共的方法来访问类的实例
16     public static Singleton2 getInstance()
17     {
18         //3.1如果类的实例未创建,那些先要创建,然后返回给调用者:本类。因此,需要static 修饰。
19         if (ss == null)
20         {
21             ss = new Singleton2();
22         }
23         //3.2 若有了类的实例,直接返回给调用者。
24         return ss;
25     }
26
27 }

3、测试结果

 1 package com.wisezone.singleton02;
 2
 3 /**
 4  * 测试单例的设计模式
 5  * @author 王东海
 6  * @date. 2016年8月30日
 7  * @version v1.0
 8  */
 9 public class Test
10 {
11     public static void main(String[] args)
12     {
13         //饿汉式测试
14         System.out.println("饿汉式测试结果:");
15         Singleton sin = Singleton.getInstance();//访问静态方法
16         Singleton sin2 = Singleton.getInstance();
17         System.out.println(sin);
18         System.out.println(sin2);
19
20         System.out.println();
21
22         //懒汉式测试
23         System.out.println("懒汉式测试结果:");
24         Singleton2 s1 = Singleton2.getInstance();
25         Singleton2 s2 = Singleton2.getInstance();
26         System.out.println(s1);
27         System.out.println(s2);
28
29     }
30 }
时间: 2024-10-10 10:49:31

单例的设计模式代码演示的相关文章

C++单例类设计模式的思考

本次博文假设有一个Manager管理类,并以此为探究单例类的设计模式. 一般作法 类声明: class Manager{ public: ~Manager(); //提供单例对象访问 static Manager* getInstance(); //删除单例对象 void deleteInstance(); void dosometing(); private: //构造函数声明为 保护方法 Manager(); //单例对象指针 static Manager* s_Manager; }; 类方

iOS开发:XCTest单元测试(附上一个单例的测试代码)

测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编写了一段代码,如何编译运行,查看结果是否正确,很多时候,还得自己想很多特殊的(比如说零值,边界值)测试数据来检测所写代码.算法是否正确.那个时候,感觉还好,比较输出只是只是控制台的一个简单的数字或者字符.在学习iOS开发中,很多时候也是要测试的,这种输出是必须在点击一系列按钮之后才能在屏幕上显示出来

单态(单例)设计模式

一.单态(单例) 他不会有新的语法参与 只是一种新的设计方法和思路而已 二.单态到底是什么 最终结果就是想要你的类只得到一个对象 不能让用户在外面new---------------> 封装构造方法 我们一个对象都得不到--------------> 提供一个方法 普通的方法外部无法访问-----------> 使用static修饰 方法中我们可以加判断 ------------> 添加一个属性 普通属性无法再静态中使用-------> 这个属性也用静态修饰 魔术方法 __c

IOS单例的设计模式

static SurveyRunTimeData *sharedObj = nil; //第一步:静态实例,并初始化置为nil. @implementation SurveyRunTimeData + (SurveyRunTimeData*) sharedInstance    //第二步:实例构造检查静态实例是否为nil. { @synchronized (self)     { if (sharedObj == nil) { [[self alloc] init]; } } return s

设计模式 - 单例模式之多线程调试与破坏单例

前言 在之前的 设计模式 - 单例模式(详解)看看和你理解的是否一样? 一文中,我们提到了通过Idea 开发工具进行多线程调试.单例模式的暴力破坏的问题:由于篇幅原因,现在单独开一篇文章进行演示:线程不安全的单例在多线程情况下为何被创建多个.如何破坏单例. 如果还不知道如何使用IDEA工具进行线程模式的调试,请先阅读我之前发的一篇文章: 你不知道的 IDEA Debug调试小技巧 一.线程不安全的单例在多线程情况下为何被创建多个 首先回顾简单线程不安全的懒汉式单例的代码以及测试程序代码: /**

iOS 中的单例设计模式

单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单例在那个文件下都能取得到. 通过单例设计模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节省系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的选择. 下面来点实在的,创建单例代码上 方法1:基于线程安全创建一个单例 .h做一下声明 + (id)

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

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

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

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

UI_12 ModalViewController(模态),单例设计模式

?.模态viewController 1.介绍 程序中切换??,可以使?UINavigationController.通过导航功能实现??切换.使用    pushViewController:animated:该方法显示的视图具有层级关系;而使用模态视图控制器presentViewController:animated:completion显示的视图与之前的视图控制器平级(或者说是两个不相干的层级). 使用场景 临时展??些内容.例如:程序中?户登录,通讯录中添加联系?等等. UIImageP