单例模式
来源:互联网 发布:七月算法机器学习视频 编辑:程序博客网 时间:2024/06/06 01:05
一个单例的程序,了解单例的实现方式。不考虑线程安全问题
单例:在程序运行期间只允许有一个对象。
先简单的说下饿汉和懒汉的实现方式,在端上代码。
饿汉式:
1.私有化构造器,防止外部随意创建对象。
2.在类内部创建对象。(类内部声明私有的静态引用变量,并创建唯一的对象,将对象的地址写入该引用变量)
3.给外界提供公共静态方法用于获取类中唯一的对象。
懒汉式:
1.私有化构造器,防止外部随意创建对象。
2.声明私有静态引用,但此时不创建对象。
3.给外界提供公共静态方法用于获取类中唯一的对象。在此方法中,先对引用变量进行判断,若为null,创建对象并写入地址,若不为null,不创建对象。
饿汉式和懒汉式,区别在于何时创建对象,饿汉引用一声明好就创建,不管有没有,懒汉式,先判断有没有,再根据需要进行对象的创建。
/* 单例模式*///饿汉class Singleton1 { //私有化构造器,防止外界随意创建对象 private Singleton1() {} //声明一个static型的引用变量,并创建一个唯一的对象对它进行初始化赋值 private static Singleton1 only = new Singleton1(); //对外界提供一个公共获取对象的方法 public static Singleton1 getInstance() { return only; }}//懒汉class Singleton2 { //私有化构造器,防止外界随意创建对象 private Singleton2() {} //声明一个静态的引用变量,用来保存对象的地址,但是此时不创建对象 private static Singleton2 only; //对外界提供一个公共的获取对象的方法 public static Singleton2 getInstance() { if(only == null) { only = new Singleton2(); } return only; }}class Singleton1Test { public static void main(String[] args) { Singleton1 s1 = Singleton1.getInstance(); Singleton1 s2 = Singleton1.getInstance(); //通过判断两个对象的地址是否一致,来看是否是唯一对象 System.out.println(s1 == s2); Singleton2 s3 = Singleton2.getInstance(); Singleton2 s4 = Singleton2.getInstance(); System.out.println(s3 == s4); }}
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式的好处:
1.某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2.省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
3.有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(就好像一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。
不忘初心。
上进,胆大,不墨迹。
敢想敢做
2 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- Java IO
- HDU 1865 (斐波拉切大数)
- 集合
- HDU 2807 The Shortest Path
- AIDL介绍和实例讲解
- 单例模式
- 《幸运转盘小游戏》【初学者】
- android 6.0使用httpUrlConnection代替httpClient
- (NYoj 201)作业题--最长递增子序列
- HDU 1162 Eddy's picture【最小生成树,Prime算法+Kruskal算法】
- #11.SAMBA服务器搭建
- 添加一个集合的元素
- 关于Fragment使用中遇到的一系列的问题
- 【集合详解】Java集合总结(上)-Collection家族