单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

1、构造方法私有化

2、声明一个本类对象

3、给外部提供一个静态方法获取对象实例

什么时候使用?

1、通过在工具类的设计中使用;

2、当一个类中没有属性;

3、该类作为工具类使用非常频繁。

两种方式:

一、饿汉式

 package practice1;
//单例模式
public class Test7 {
public static void main(String[] args) {
Singleton s=Singleton.getInstance();
s.method();
}
}
class Singleton{
private static Singleton singleton=new Singleton();//定义时就创建对象
private Singleton(){//构造方法私有化
}
public static Singleton getInstance(){//给外部提供一个全局访问点,静态方法
return singleton;
}
public void method(){//测试方法
System.out.println("method");
}
}

饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以是线程安全的。

二、懒汉式

class Singleton2{
private static Singleton2 singleton2=null;//定义时不直接创建
private Singleton2(){}//构造方法私有化
public static Singleton2 getInstance(){
if(singleton2==null){
singleton2=new Singleton2();
}
return singleton2;
}
public void method(){//测试方法
System.out.println("method");
}
}

最新文章

  1. js 中的快速排序算法简单实现
  2. android sqlite datetime demo
  3. js之滚动置顶效果
  4. Mysql 基础2
  5. 前端开发面试题JS2
  6. ZOJ 3494 (AC自动机+高精度数位DP)
  7. Keyframes介绍
  8. php 接口示例
  9. Lua与javascript的差异
  10. Ubuntu16.04建立本地更新源
  11. [JavaScript] requireJS基本使用
  12. [CF893F] Subtree Minimum Query
  13. 微信小程序无法定位
  14. 用JS编写个人所得税计算器
  15. 批量镜像locator(比如表情模板)
  16. wc2016鏖战表达式(可持久treap)
  17. Git 命令操作记录
  18. svn如何提取文件更新列表
  19. CH0601 Genius ACM【倍增】【归并排序】
  20. oracle查看表中数据的大小

热门文章

  1. 详细介绍jQuery.outerWidth() 函数具体用法
  2. javase jdk 环境变量 涵义
  3. ASP.NET 压缩输出的HTML字符
  4. day29(对象转xml(使用java))
  5. Hdu4135 Co-prime 2017-06-27 16:03 25人阅读 评论(0) 收藏
  6. Lib作为“静态库”与“动态库”中的区别
  7. Scala_针对集合的操作
  8. iOS cell左滑出现多个功能按钮(IOS8以后支持)
  9. cxGrid 怎样才能让不自动换行 WordWrap:=false
  10. 直接端口打印 支持USB接口的打印机吗?解决办法