参考链接: Java中的私有构造函数和Singleton类

单例模式与构造器私有化

所谓单例模式,即一个类只有一个实例化对象。如果不希望一个类产生很多对象,就要使用单例设计模式。比如:使用打印机时,只需要一个打印机实例对象,多个打印机对象会造成内存浪费;windows任务管理器只能打开一个,多个任务管理器窗口是无意义的;windows回收站也只有一个…

单例模式的核心是构造方法的私有化(即在入口处限制了对象的实例化),之后在类的内部实例化对象,并通过静态方法返回实例化对象的引用。

例子

/**

* 单例模式与构造器私有化

* @author HailongYao

*

*/

public class Singleton {

private static Singleton instance = new Singleton();//内部产生本类的实例化对象

private Singleton(){    //将构造方法进行了封装,私有化

}

public static Singleton getInstance(){    //通过静态方法取得instance对象

return instance;

}

public void print(){    //定义一个方法,打印Hello

System.out.println("Hello!");

}

public static void main(String[] args) {

Singleton s1, s2;

s1 = Singleton.getInstance();

s2 = Singleton.getInstance();

s1.print();

s2.print();

}

}

结果:  在以上例子中,instance、s1、s2在内存中实际上都是指向同一个对象的

[转载] Java单例模式与构造器私有化相关推荐

  1. Java单例模式:饿汉与懒汉区别

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象 ...

  2. java单例模式几种实现方式

    1.饿汉式(线程安全,调用效率高,但是不能延时加载): public class ImageLoader{ private static ImageLoader instance = new Imag ...

  3. java单例模式(饿汉式和懒汉式的几种不同写法)

    1.饿汉式(直接创建)三种创建方法代码里面都有 第三种静态代码块方式,需要创建个properties文件 package java2;import java.io.IOException; impor ...

  4. Java单例模式的几种实现方式

    Java单例模式的几种实现方式 在Java 中,单例类只能有一个实例,必须创建自己的唯一实例,单例类必须给所有其他对象提供这一实例.Java 单例模式有很多种实现方式,在这里给大家介绍单例模式其中的几 ...

  5. java单例模式_懒汉式

    懒汉式单例模式 步骤 1.仍然将构造器私有化 2.定义一个静态属性 3.提供一个公共的static方法,可以返回一个Cat对象 4.懒汉式,只有用户创建getInstance时,才能返回cat对象 p ...

  6. Java单例模式个人总结(实例变量和类变量)

    Java单例模式 背景知识:Static关键字. 在对于定义类的变量,分为两种,是否具有static修饰的变量: 没有static修饰的变量,通过类的实例化(对象)引用,改变量称为实例变量: 使用st ...

  7. java 反射 单列_轻松掌握Java单例模式

    单例模式是23中设计模式中最简单的设计模式,在企业开发中也应用的特别多.单例模式的优点是:项目中有且仅有一个实例. 特点:构造器私有化,对象私有化,只提供一个对外访问的接口. 应用场景: 1.系统需要 ...

  8. Java单例模式优化写法

    转载自 http://blog.csdn.net/diweikang/article/details/51354982 Java单例模式优化写法 方法一:推荐 [java] view plain co ...

  9. 转- java单例模式几种实现方式

    转自: https://www.cnblogs.com/ngy0217/p/9006716.html : 单例模式的五种实现方式 1.饿汉式(线程安全,调用效率高,但是不能延时加载): 1 2 3 4 ...

最新文章

  1. MySQL中有哪些锁?
  2. Postgres主进程文件—postmaster.pid
  3. 引用类型赋值“.NET技术”为null与加速垃圾回收
  4. C语言:存储类型,内存管理
  5. Linux资源监控工具
  6. sql server 2008导出数据至Excel或者wps
  7. android 投屏 版本号,安卓设备投屏画质模糊及投屏延迟的调整方法
  8. 201711671109《Java程序设计》第九周总结(第8章)
  9. matlab模拟塞曼图谱,塞曼效应理论与实验分析.doc
  10. 畜牧业的论文发表一般多少钱
  11. android手机如何关闭程序,安卓手机如何关闭防火墙
  12. python的图形用户界面
  13. 信号量与生产者消费者问题
  14. 直播助手-直播好助手,新增PPT课件直播功能使用教程
  15. 永辉系统服务器,永辉超市供应商服务系统(永辉超市供应商供零系统)
  16. SOHO一族(在家办公)
  17. 红外遥控器信号的接收和转发
  18. android双系统切换软件,双系统如何进行切换?
  19. vue的pc项目每次扫码登录时,需要清除缓存才能扫码登录成功问题,求解决方案
  20. 信号与系统公式笔记(3)

热门文章

  1. NYOJ477 - A+B Problem III
  2. linux查看log日志在哪,如何查看linux的系统log日志
  3. php 数据分流,php实现请求分流 - osc_6fvwlc7h的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. ic读卡器设置工具_什么读卡器,是一用过就想揣身上不想丢的?
  5. 如何将整个splitcontainer控件缩小_将绣球花养成花球,整个夏天都是花团锦簇,教你如何将它调成蓝色...
  6. 索引 2 超出范围。_重点推荐:音响灯光行业搜索引擎推广教学
  7. 统计有几个连通分量--hdu 1213 并查集
  8. JQueryDOM之查找节点
  9. oracle当前用户创建的表不可见?
  10. bzoj 4034: [HAOI2015]树上操作(树链剖分+线段树区间更新)