java设计模式之单例模式
2015-11-22 17:03
405 查看
单例设计模式:
保证一个类仅有一个实例, 并提供一个访问它的全局访问点。
如何保证单例模式(不能被任意实例化对象)
1:构造方法私有化
2:声明一个本类对象
3:给外部提供一个静态方法获取对象的实例
实现方式:
1:饿汉式
2:懒汉式
代码如下:
/*
* 单例设计模式
*/
public class SingletoDemo {
public static void main(String[] args) {
Singleto1 s= Singleto1.getInstance();
s.print();
Singleto2 s2 = Singleto2.getInstance();
s2.print();
}
}
/*
* 把该类设计常单例模式
* 1:饿汉式
*/
class Singleto1{
//定义一个本类对象并实例化
private static Singleto1 s = new Singleto1 ();
//构造方法私有化
private Singleto1() {
}
//给外部提供一个静态方法获取实例对象
public static Singleto1 getInstance () {
return s;
}
public void print () {
System.out.println("饿汉式单例模式");
}
}
/*
* l懒汉式单例设计模式
*/
class Singleto2{
//定义一个本类对象但不实例化
private static Singleto2 s = null;
//构造方法私有化
private Singleto2() {
}
//给外部提供一个静态方法获取实例对象
public static Singleto2 getInstance () {
if (s==null) {
s = new Singleto2();
}
return s;
}
public void print () {
System.out.println("懒汉式单例设计模式");
}
}
/* 1:推荐使用饿汉式
* 2:懒汉式会涉及线程安全问题
* 3:应用场合:在设计中有时需要工具类,如访问数据库等操作
* 将其设计成单例模式应用将会很便捷。
*/
保证一个类仅有一个实例, 并提供一个访问它的全局访问点。
如何保证单例模式(不能被任意实例化对象)
1:构造方法私有化
2:声明一个本类对象
3:给外部提供一个静态方法获取对象的实例
实现方式:
1:饿汉式
2:懒汉式
代码如下:
/*
* 单例设计模式
*/
public class SingletoDemo {
public static void main(String[] args) {
Singleto1 s= Singleto1.getInstance();
s.print();
Singleto2 s2 = Singleto2.getInstance();
s2.print();
}
}
/*
* 把该类设计常单例模式
* 1:饿汉式
*/
class Singleto1{
//定义一个本类对象并实例化
private static Singleto1 s = new Singleto1 ();
//构造方法私有化
private Singleto1() {
}
//给外部提供一个静态方法获取实例对象
public static Singleto1 getInstance () {
return s;
}
public void print () {
System.out.println("饿汉式单例模式");
}
}
/*
* l懒汉式单例设计模式
*/
class Singleto2{
//定义一个本类对象但不实例化
private static Singleto2 s = null;
//构造方法私有化
private Singleto2() {
}
//给外部提供一个静态方法获取实例对象
public static Singleto2 getInstance () {
if (s==null) {
s = new Singleto2();
}
return s;
}
public void print () {
System.out.println("懒汉式单例设计模式");
}
}
/* 1:推荐使用饿汉式
* 2:懒汉式会涉及线程安全问题
* 3:应用场合:在设计中有时需要工具类,如访问数据库等操作
* 将其设计成单例模式应用将会很便捷。
*/
相关文章推荐
- 开始我的javaweb学习之旅
- Java读取文件MD5的两种方案
- TestFrameWork API接口测试框架
- java--I/O流总结
- java 每日习题(九)从数据库中取数据
- JAVA语法基础之标识符和关键字
- java学习日记-------------------------------------贪吃蛇
- JAVA语法基础之标识符和关键字
- java中解析xml的四种方法
- Java中的clone方法 -- 原型模式
- Java I/O底层是如何工作的?
- Java语言的三大特性即是:封装、继承、多态
- Java命令行设置classpath路径
- Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V
- SpringMVC适配器
- 深入研究java.lang.ThreadLocal类
- 【Eclipse_部署web项目篇】修改eclipse默认指向的WebContent目录作为启动运行加载
- Java 中如何实现(类似于C#中的OUT)的输出类型参数
- Java中的String为什么是不可变的?
- java.lang.String的 split方法用法总结