/*

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

* 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();

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

最新文章

  1. 赵文豪 GDB调试汇编堆栈过程分析
  2. wireless tool 移植
  3. Windows 系统下设置Nodejs NPM全局路径
  4. 网狐6603手机棋牌游戏源码.rar
  5. dede取子栏目时重复显示同级栏目的终极解决方法
  6. 项目积累——jQuery
  7. Netsharp快速入门(之6) 基础档案(创建导航菜单)
  8. Mysql笔记——DML
  9. MVC-生成验证码
  10. Linux下C编程通过宏定义打开和关闭调试信息
  11. launchMode传递参数注意startActivityForResult
  12. openwrt串口的使用
  13. node.js系列:(调试工具)node-inspector调试Node.js应用
  14. Python中使用MongoEngine1
  15. 路由器数据统计SQL脚本
  16. 激活函数--(Sigmoid,tanh,Relu,maxout)
  17. NDArray自动求导
  18. GDC2017资料整理
  19. 字符乱码 导致 ORA-12899: value too large
  20. tensorflow的警告

热门文章

  1. exec方法
  2. C++11的new concepts (move semantic)
  3. Scheme vs Schema
  4. Linux物理内存相关数据结构
  5. MonogoDB的GirdFS
  6. 移动端 meta 标签笔记
  7. Unity3D ShaderLab 各向异性高光
  8. Ubuntu Vim 复制到系统粘贴板
  9. Day04_JAVA语言基础第四天
  10. 【题解】【矩阵】【回溯】【Leetcode】Unique Paths II