<!----><!---->
单例模式Singleton的适用场合:一个类Class只要一个实例存在
公共操作,比如连接数据库、创建目录、创建文件等等。
1.没有使用单例模式:
<!---->
package
com.javaeye.kang.singleton;
/**
*
没有使用
单
例模式
*
两次
new
FileOpen();
调
用了两次构造函数
*
假如使用
FileOpen
fo2
=
fo1;
又会
强
求程序
员
使用
1000
行代
码
前定
义
的
fo1
*/
class
FileOpen {
public
FileOpen() {
System.
out
.println(
"
构造函数
"
);
}
public
void
createFile() {
System.
out
.println(
"
创
建文件
"
);
}
}
public
class
SingletonTest {
public
static
void
main(String[] args) {
FileOpen
fo1 =
new
FileOpen();
fo1.createFile();
//1000
行代
码
FileOpen
fo2 =
new
FileOpen();
fo2.createFile();
}
}
/*
当前
测试结
果
:
构造函
数
创
建文
件
构造函
数
创
建文
件
*/
|
2.使用单例模式1:
/**
*
使用
单
例模式
1
*
*/
class
FileOpen {
public
static
FileOpen
fo
=
new
FileOpen();
//
对
外界提供本
类
自己
new
的
对
象
public
static
FileOpen getInstance() {
return
fo
;
}
//
将构造函数
设
置成私有的,不
让
外界直接
new
对
象,只能使用我
对
外提供的
对
象
private
FileOpen() {
System.
out
.println
(
"
构造函数
"
);
}
public
void
createFile() {
System.
out
.println
(
"
创
建文件
"
);
}
}
public
class
SingletonTest {
public
static
void
main(String[] args) {
//
直接使用
FileOpen
类
自己
对
外提供的
对
象,不再需要再人
为
地去
new
对
象
FileOpen
fo1 = FileOpen.getInstance
();
fo1.createFile();
//1000
行代
码
FileOpen
fo2 = FileOpen.getInstance
();
fo2.createFile();
}
}
/*
当前
测试结
果:
构造函数
创
建文件
创
建文件
*/
|
3.使用单例模式2:
/**
*
使用
单
例模式
2
*
对
于多
线
程,不太安全
*
通
过
加同
步
来保
证线
程安全
*/
class
FileOpen {
public
static
FileOpen
fo
=
null
;
//
对
外界提供本
类
自己
new
的
对
象
//
使用
synchronized
来保
证线
程安全
public
static
synchronized
FileOpen
getInstance() {
if
(
fo
==
null
) {
fo
=
new
FileOpen();
}
return
fo
;
}
//
将构造函数
设
置成私有的,不
让
外界直接
new
对
象,只能使用我
对
外提供的
对
象
private
FileOpen() {
System.
out
.println(
"
构造函数
"
);
}
public
void
createFile() {
System.
out
.println(
"
创
建文件
"
);
}
}
<!----><!---->
<!---->
public
class
SingletonTest {
<!----><!---->
<!---->
public
static
void
main(String[] args) {
//
直接使用
FileOpen
类
自己
对
外提供的
对
象,不再需要再人
为
地去
new
对
象
FileOpen
fo1 = FileOpen.getInstance
();
fo1.createFile();
//1000
行代
码
FileOpen
fo2 = FileOpen.getInstance
();
fo2.createFile();
}
}
/*
当前
测试结
果
:
构造函
数
创
建文
件
创
建文
件
*/
|
- 描述: 单例模式
- 大小: 105.4 KB
- 描述: 单例模式要点
- 大小: 99.9 KB
- 描述: 单例模式小结
- 大小: 101.9 KB
分享到:
相关推荐
此示例展示了Qml 的单例模式(类似全局对象,只生成一次实例,可全局使用) surfsky.cnblogs.com
4、单例模式(Singleton Pattern) 用意:仅允许生成一个对象时
在Java应用中,单例对象能保证在一个...3、有些像交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了,只有使用单例模式,才能保证核心交易服务器独立控制整个流程。 CSDN代码的详细解释。
"singleton单例模式1" 单例设计模式是软件设计模式中的一种,目的是确保某个类只能有一个实例,并提供一个全局的访问点来访问这个实例。 首先,单例模式的要点是:① 某个类只能有一个实例。构造器私有化。② 它...
java模式之单例模式: 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。 特点: 1,一个类只能有一个实例 2,自己创建这个实例 3,整个系统都要使用这个实例 例: 在下面的对象图...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
单例模式的特点有三: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,...
单例模式的实现,创建,一个文档作为简介
Java设计模式-单例模式详解 单例模式是 Java 设计模式中的一种常用的设计模式,旨在保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的目的是为了保证在一个进程中,某个类有且仅有一个实例。 ...
单例模式是一种常见的设计模式,它的主要作用是确保在内存中仅创建一次对象,并提供一个全局访问点。单例模式有两种类型:饿汉类型和懒汉类型。 饿汉类型的单例模式是在类加载时创建对象,例如: ```java class ...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,有以下特点: 1. 单例类只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须给所有其他对象提供这一实例。 单例模式有多种实现...
单例设计模式Singleton1是Java设计模式中的一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。这个模式的核心知识点可以总结为三点: 1. ...
单例模式(Singleton)属于创建型的设计模式,它限制我们只能创建单一对象或者某个类的单一实例。 通常情况下,使用该模式是为了控制整个应用程序的状态。在日常的开发中,我们遇到的单例模式可能有:Vuex 中的 ...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 学习demo
单例模式(Singleton Pattern 单件模式或单元素模式),是常见的一种设计模式,它有三个特点 1.只能有一个实例 2.必须自行创建这个实例 3.必须给其他对象提供这一实例 下面用PHP代码实现一下 <?PHP /** *...
一个类可以创建多个对象,这是面向对象的语言特性,想要实现单例模式,就要屏蔽这个特性,防止系统可以随意创建类的对象。 要做到这一点,通常做法就是利用private关键字将类的构造方法私有化,使外部调用者无法利用...
1.1.1 摘要 ...单例模式(Singleton)是几个创建模式中最对立的一个,它的主要特点不是根据用户程序调用生成一个新的实例,而是控制某个类型的实例唯一性,通过上图我们知道它包含的角色只有一个,
单例模式(Singleton Pattern)作为创建型模式中的一种,旨在确保一个类在系统中只有一个实例,并提供全局访问点。
设计模式单例模式学习教案 单例模式概述 单例模式是设计模式中的一种,用于确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例。这种模式对对象的创建和访问进行了限制,以确保系统中只有一个实例...
单例模式(Singleton Pattern)是设计模式中最简单的模式之一,属于创建型模式。这种设计模式主要是类的对象只有一个实例,不需要每次new 创造。而我们要做的的就是确保这个对象创建的唯一。然后根据一些特征进行...