/*

* 设计模式: 对问题行之有效的解决方式,其实他是一种思想。

* 1.单例设计模式。

* 
解决问题:  就是可以保证一个列在内存中的对象唯一性。

*

*如何保证对象的唯一性:

*1. 不允许其他程序用new创建该类对象。

*2. 在该类中创建一个本类实例。

*3. 对外提供一个方法让其他程序可以获取该对象。。

*

*步骤:

*1.私有化该类构造函数。

*2.通过new在本类中创建一个本类对象。

*3.定义一个公有的方法,将创建的对象返回。

*

*/

第一种方式   构建单例模式  饿汉式

final class SingleTest

{

//设为private  保证外界不能访问
static保证其唯一性  类一加载对象就已经存在的

private static SingleTest s = new SingleTest();

private SingleTest(){};//构造函数私有化   保证不能new

public static SingleTest getInstance()//对外提供一个public方法。 比返回一个单例对象

{

return s;

}

}

=========================================================================================================

第二种方式
 构建单例模式  懒汉式

//延迟加载形式。

final class SingleTest2//类加载进来 , 没有对象,  只有调用了getInstance()方法时, 才会创建对戏。

{

private static SingleTest2 s = null;//设为private  保证外界不能访问。。   static保证其唯一性

private SingleTest2(){};//构造函数私有化   保证不能new

public static SingleTest2 getInstance()//对外提供一个public方法。 比返回一个单例对象

{

if(s==null)

{

s = new SingleTest2();

}

return s;

}

}

==============================================线程安全模式======================

//饿汉模式(线程安全模式)

class Single

{

private final Single s = new Single();

private Single(){};

public synchronized Single getInstace()

{

return s;

}

}

//懒汉模式(线程安全模式)

class Single2

{

private static Single2 s = null;

private Single2(){};

public static Single2 getInstance()

{

if(s==null)

{

synchronized(Single2.class)

{

if(s==null)

{

s = new Single2();

}

}

}

return s;

}

l }

====================================================================================

// TODO Auto-generated method stub

/*

* Runtime没有构造方法 ,说明该类不可以创建对象。又发现还有非静态的方法,

* 说明该类应提供静态的返回该类对象的方法。

* 而且只有一个,说Runtime类使用了单例模式

*/

Runtime r = Runtime.getRuntime();

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java——设计模式(单例模式)的更多相关文章

  1. java设计模式单例模式 ----懒汉式与饿汉式的区别

    常用的五种单例模式实现方式 ——主要: 1.饿汉式(线程安全,调用率高,但是,不能延迟加载.) 2.懒汉式(线程安全,调用效率不高,可以延时加载.) ——其他: 1.双重检测锁式(由于JVM底层内部模 ...

  2. Java设计模式の单例模式

    -------------------------------------------------- 目录 1.定义 2.常见的集中单例实现 a.饿汉式,线程安全 但效率比较低 b.单例模式的实现:饱 ...

  3. JAVA设计模式-单例模式(Singleton)线程安全与效率

    一,前言 单例模式详细大家都已经非常熟悉了,在文章单例模式的八种写法比较中,对单例模式的概念以及使用场景都做了很不错的说明.请在阅读本文之前,阅读一下这篇文章,因为本文就是按照这篇文章中的八种单例模式 ...

  4. Java设计模式 - - 单例模式 装饰者模式

    Java设计模式 单例模式 装饰者模式 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 静态代理模式:https://www.cnblogs.com/StanleyBlogs/p/1 ...

  5. 【设计模式】Java设计模式 - 单例模式

    [设计模式]Java设计模式 - 单例模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 分享学习心得,欢迎指正,大家一起学习成长! 原创作品,更多关注我CSDN: ...

  6. Java 设计模式 —— 单例模式

    1. 概念: 单例模式是一种常用的软件设计模式.核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果 ...

  7. Java设计模式 - 单例模式 (懒汉方式和饿汉方式)

    概念: Java中单例模式是一种常见的设计模式,单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的写法有好几种,这 ...

  8. java设计模式——单例模式(一)

    一. 定义与类型 定义:保证一个类仅有一个实例,并提供一个全局访问点 类型:创建型 二. 适用场景 想确保任何情况下都绝对只用一个实例 三. 优缺点 优点: 在内存里只有一个实例,减少了内存开销 可以 ...

  9. JAVA设计模式--单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

  10. Java设计模式-单例模式(Singleton)

    单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频繁,对于一些大型的对象,这是一笔 ...

随机推荐

  1. Cygwin下载,安装教程

    Cygwin是一个用于在Windows上模拟Linux环境的软件,由于工作上的需要,我要使用它,至于为什么用它,我在这里不做过多的解释,本文的目的,旨在于解决Cygwin安装上的问题. 原始的安装Cy ...

  2. iOS上架(转)

    自己的经验总结,有错的话请留言,第一时间更改. 先大概说一下IOSAPP上架的几个步骤(详细步骤见下图): 创建证书请求文件 登录苹果开发者中心生成发布者证书(下载下来要双击一下) 设置APPID(要 ...

  3. BZOJ 4562 食物链

    我们需要拓扑一下. #include<iostream> #include<cstring> #include<cstdio> #include<algori ...

  4. HDOJ-三部曲一(搜索、数学)-1002-Children of the Candy Corn

    Children of the Candy Corn Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Jav ...

  5. 【LeetCode OJ】Word Break

    Problem link: http://oj.leetcode.com/problems/word-break/ We solve this problem using Dynamic Progra ...

  6. UILocalNotification详解

    以下内容来自网络 本地Notification所使用的对象是UILocalNotification,UILocalNotification的属性涵盖了所有处理Notification需要的内容.UIL ...

  7. Android Priority Job Queue (Job Manager):线程任务的容错重启机制(二)

     Android Priority Job Queue (Job Manager):线程任务的容错重启机制(二) 附录文章4简单介绍了如何启动一个后台线程任务,Android Priority J ...

  8. 用 GitHub 来部署静态网页 ꒰・◡・๑꒱

    http://segmentfault.com/a/1190000002765287 在尝试过用 GitHub 部署静态 HTML 网页后,觉得其实挺容易的,这里简单说说如何用 GitHub 来完成部 ...

  9. UVa 1346 - Songs

    题目大意:n张唱片,每张都有长度和频率,要求题目中公式值最小.求一个排序,输出该排序下第m张CD的id. 思路:贪心,长度越长放越后面,频率越低放越后面,所以按len/p去排序即可. #include ...

  10. win7 一些快捷系统工具命令

    1.cleanmgr: 打开磁盘清理工具 2.compmgmt.msc: 计算机管理 3.conf: 启动系统配置实用程序 4.charmap: 启动字符映射表 5.calc: 启动计算器 6.chk ...