---------------------------ASP.Net+Android+IOS开发、java培训、期待与您交流! ---------------------------------
一、单例设计模式
1、 我的理解:单例就是一个对象或者说是有有限的对象,避免其他的程序可以过多的创建此对象,这样就可以操作 特定的对象形成统一的现象。所有对象都共享同样的信息,就定义成单例模式。便于管理,安全。
2、设计模式: 框架,解决这一类问题最行之有效的方法
java中23种设计模式
单例设计模式:解决一个类在内存只存在一个对象
3、保证对象的唯一性。
思想:1、为力避免其他程序过多建立该类对象,先禁止其它程序建立该类对象
2、还为了让其它程序可以访问到该类对象,只好在本类中,自定义一个对象
3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
4、这三部怎么用代码体现呢?
步骤:
1、将构造函数私有化,private---避免其它类创建此类对象。
2、在类中创建一个本类对象---为了可以操作本类的中的成员。
3、提供一个方法,返回在本类中实例化的对象---为了可以让其它类可以获取到该对象。
对于事物该怎么描述,还怎么描述
当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可。
二、单例模式:懒汉式和饿汉式。
便于理解的记忆方法:饿汉式就是一个人非常饿,所以他进来就吃(就是先实例化),懒汉式就是一个人非常懒,那么他什么时候饿什么时候才做,才吃(就是后实例化,就是什么时候用到,什么时候实例化)
饿汉式就是先实例,只要是类一加载,那么次对象就存在。
/*第一种方法
* 这个是先初始化对象
* 成为:饿汉式
* single类一进内存,就已经创建好了对象
* /
class Single
{
private static Single s=new Single();//先初始化
private Single(){};
public static Single getInstance()
{
return s;
}
}
2、懒汉式---模式代码
对象是方法被调用时,才初始化,也叫做对象的延时加载,
//single 类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象
class Single3
{
private static Single3 s=null;
private Single3(){};
public static Single3 getInstance()
{
if(s==null){
synchronized(Single.class)//锁
{
if(s==null)
s=new Single3();//后初始化
}
}
return s;
}
}
3、懒汉式增加安全性
class Single2{
private static Single s=null;
private Single(){}
public static Single getInstance(){
if(s==null){
synchronized(Single.class){//多重判断,方便与线程的安全性
if(s==null){
s=new Single();
}
}
return s;
}
}
}
从以上分析,一般我采用饿汉式编程,懒汉式麻烦而且有安全隐患。
---------------------------ASP.Net+Android+IOS开发、java培训、期待与您交流! --------------------------------