设计模式:解决某一类问题行之有效的解决思想。
单例设计模式:(singleton)设计模式:
弄清设计模式是要解决什么问题的?
单例模式要解决的问题:保证一个类对象的唯一性。
应用场景:
多个程序都要使用一个对象或配置文件中的数据,
而且要实现数据共享和交换,必须要将多个数据封装到一个对象中。
而且多个程序操作的是同一个对象。因此必须保证这个配置文件对象的唯一性。
怎么保证呢?:
不让其他程序,创建该对象,自己在该类中创建一个对象,可控。
给其他程序提供访问方式.
实现步骤:
1,直接私有化构造函数,不让其他程序创建的对象初始化。
2,直接在本类中new一个本类对象。
3,定义一个功能,其他程序可以通过这个功能获取到本类的对象。
单例模式代码的一种体现:
//定义本类:
饿汉式加载方式:(无论是否调用这个类里的方法,都会创建该本类对象)
class single{
//1,定义私有化构造函数:
private single(){}
//2,创建一个本类对象:可以私有化
private static /*final*/ single s = new single();
//3,定义一个方法返回这个对像。对对象可控
public static single getInstance(){
return s;
}
}
单例模式的另一种代码体现:
对象并不在本类中创建,单例的延迟加载方式:
也叫懒汉式加载方式:(只有调用这个方法时才会创建对象)
面试时最多
//定义本类:
class single2{
private static single2 s2 = null;
private single2 (){}
public static single2 getInstance(){
if(s2==null)
s2 = new single2();
return s2;
}
}
//调用类:
class singledemo{
public static void main(String[] args){
//要想获得single的对象,调用getInstance方法,既然无法通过对象调用
,只能用类名调用,所以这个方法必须是static修饰的。
single ss = single.getInstance();
single ss2 = single.getInstance();
//下列方法也可以实现调用,加入访问来获得就是为了对对象可控。
// single ss = single.s;
// single ss2 = single.s;
}
}
单例模式的种类:内部类加载方式,集合加载方式,单例模式子类扩展方式, |
|