【小白的java成长系列】——构造方法私有化(单例设计)
来源:互联网 发布:java 数组最大长度 编辑:程序博客网 时间:2024/05/21 11:25
有了解过spring框架的童鞋们就知道,spring的bean默认是什么形式呀?———单例形式的。
问:那什么叫做单例?单例其实就是Singleton,顾名思义就是只有单个的实例对象操作。
那为什么要使用单例呢?
至于这个问题,后面再做解释,我们先看代码:
package me.javen.oop;public class SingletonDemo {public static void main(String[] args) {Singleton singleton1 = Singleton.getInstance();Singleton singleton2 = Singleton.getInstance();System.out.println(singleton1 == singleton2);}}class Singleton{private static Singleton singleton;public static Singleton getInstance(){//提供唯一的对象获取口if(singleton == null){singleton = new Singleton();}return singleton;}private Singleton(){//私有化构造方法System.out.println("只创建一次~");}}
我想问一下同志们,这个的输出是什么?
运行输出结果:
只创建一次~
true
我们可以看到singleton1和singleton2是相等的,意味着这两个对象是同一个对象。
首先来看一下私有化构造方法:
意味着外部使用Singleton这个类的时候,不能通过new关键字创建对象了。。以下会报错。。
都不能new了,那我们怎么使用Singleton类呢?
通过以下方式公开:
public static Singleton getInstance(){//提供唯一的对象获取口if(singleton == null){singleton = new Singleton();}return singleton;}能不能不提供这样的一个方法?
当然能喽,只是不提供这样的一种方式,你这个类就真的无法使了~
现在来回答开篇的那个问题,为什么要使用单例?
1、减少不必要的内存开销,你想啊,要是创建10个对象,就得开销10分内存吧,而单例就1个对象,当然就开销1份内存喽。。
如果能减少内存开销,那我们在设计类的时候,可不可以都设计成单例的?这样不是很节省内存。。这个问题,先不解释哈~留给学习的好童鞋思考
2、简化对象创建过程的复杂性。。这个怎么说呢,要看对象创建的复杂性了~
3 0
- 【小白的java成长系列】——构造方法私有化(单例设计)
- Java 单例设计模式——构造方法私有化
- 构造方法私有化---单例设计模式
- [Java]构造方法私有化-->单例模式
- Java构造方法私有化-->单例模式-->Runtime类的设计
- 单态模式小程序(构造方法私有化)
- 0008_构造方法私有化与单例设计模式
- 构造方法私有化 (单态设计模式)
- java面向对象(十三) 构造方法私有化(单例与多例设计模式)
- java——Java构造方法的私有化
- Java——构造方法私有化2
- Java 构造方法私有化与单例模式
- java 从构造方法私有化引出单例模式
- Java中构造方法私有化-->单态
- 构造方法私有化和单例模式
- 构造方法私有化demo---单例模式
- java构造方法私有化
- java构造方法私有化
- Android动画效果translate、scale、alpha、rotate详解
- SSL_VPN和IPSec_VPN的区别与互补
- C++ Primer 【第四版】第十六章 部分选做习题
- Objective-c 内存溢出问题经验汇总
- 视频播放自定义控制器
- 【小白的java成长系列】——构造方法私有化(单例设计)
- Python Tkinter 会话窗口
- Hessian 2.0序列化协议规范
- 给定一个日期,求该日期的前一天和后一天(Java中日期类的用法)
- 每天一个linux命令(5):rm 命令
- 经济基础和上层建筑
- HDOJ题目1863畅通工程(最小生成树)
- Google发现好领导要有这项“无聊”的特质
- win7系统下使用secureCRT建立与VMware上fedora17的通信