码迷,mamicode.com
首页 > 其他好文 > 详细

单例设计模式

时间:2014-07-31 16:56:27      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:单例设计模式



单例设计模式

想要实现单例设计模式的核心就是构造方法的私有化

分为两种:饿汉单例模式和饱汉单例模式

饿汉单例模式(推荐使用)

 

核心要点:

1.构造器私有化

2.提供一个私有属性的Singleton对象

3.利用static{}代码块来new 创建对象(推荐使用static代码块来创建new 对象)

4.提供获得单例对象的静态方法

饱汉单例模式:

核心要点:

1.构造器私有化

2.提供一个私有属性的Singleton对象

3.不需要new Singleton对象(第四步中new)

4.提供获得单例对象的静态方法(判断是否存在singleton对象,没有就如果存在就直接返回)

 

它们直接没啥太大的区别,可以暂时将它们看作相同的,等深入多线程之后会有所不同

饿汉代码:

public class Singleton {

// 定义一个静态的 singleton对象,由内部构造

private static Singleton singleton = null;

static {

singleton = new Singleton();

}

// 构造器 私有化

private Singleton() {

}

public static Singleton getSingleton() {

return singleton;

}

// 一系列方法

}

饱汉代码:

public class Singleton2 {

private static Singleton2 singleton = null;

// 构造器 私有化

private Singleton2() {

}

// 定义一个静态方法来获得 Singleton 实例

public static Singleton2 getSingleton() {

if (singleton == null) {

singleton = new Singleton2();

} else

return singleton;

return singleton;

}

//一些列方法

}

 

思路由来:

1.如果想使一个类只能实例化出一个对象,那么只能私有化类,构造方法私有化

2.私有化方法之后,就没法通过new Class来访问,但是要获得一个对象一定要有new 关键字

3.那么只能在类的里面new Class 来创建一个实例了,使用static来完成 new Class

4.要想获得这个实例的话,那么久需要使其成为一个该类的属性

5.根据类的封装性和安全性考虑,要private该属性,并且提供get方法

6.最后就要提供一个静态的getSingleton方法,返回该 singleton对象。

单例设计模式,布布扣,bubuko.com

单例设计模式

标签:单例设计模式

原文地址:http://blog.csdn.net/faithpassion/article/details/38319981

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!