设计模式
单列设计模式
怎么分辨是否使用了单列模式?
Runtime类就是单列
注意:
1.没有构造方法的,意味着这个类不能够创建对象。
2.意味着里面的方法都是静态的!!!
3.如果有void方法,那么一定有一个static方法返回该类对象!!!
学习Runtime类的目的:是为了更好的理解单例模式在该类中的体现!!!
Runtime:没有构造方法摘要,说明该类不可以创建对象,又发现还有非静态的方法,说明该类应该提供静态的返回该类的对象的方法,而且只有一个,说明Runtime类使用了单例设计模式。
单例模式设计概述
设计模式:对问题行之有效的解决方法,其实它是一种思想。
单例(单个实例)设计模式
解决的问题:就是可以保证一个类在内存的对象唯一性。
比如多于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
如何来保证配置信息的唯一性?
1.不允许其他程序用new创建该类对象。
2.在该类创建一个本类实例。
3.对外提供一个方法让其他程序可以获取该对象。
实现步骤
1.私有化该类构造函数
2.通过new在本类中创建一个本类对象
3.定义一个公有的方法,将创建的对象返回。
package 单例模式;
/**
* 单例设计模式
如何来保证配置信息的唯一性?
1.不允许其他程序用new创建该类对象。
2.在该类创建一个本类实例。
3.对外提供一个方法让其他程序可以获取该对象。
* @author Administrator
*
*/
/*
* 实现步骤:
1.私有化该类构造函数
2.通过new在本类中创建一个本类对象
3.定义一个公有的方法,将创建的对象返回。
*/
class Single {
//1.new本类对象
private static Single s = new Single();
//2.私有化该类构造函数
private Single() {
}
//3.定义一个公有的方法,将创建的对象返回
public static Single getInstance() {
return s;
}
}
class SingleDemo {
public static void main(String[] args) {
Single ss = Single.getInstance();
System.out.println(ss);
}
}
饿汉式和懒汉式
package 单例模式_懒式汉式和饿汉式;
/* 单例设计模式
如何来保证配置信息的唯一性?
1.不允许其他程序用new创建该类对象。
2.在该类创建一个本类实例。
3.对外提供一个方法让其他程序可以获取该对象。
*/
/*
* 实现步骤:
1.私有化该类构造函数
2.通过new在本类中创建一个私有,静态,本类对象
3.定义一个静态公有的方法,将创建的对象返回。
*/
//饿汉式
//注意:一般我们开发的话,选择饿汉式,面试的话一般是懒汉式
class Single {
//1.new本类对象
private static Single s = new Single();
//2.私有化该类构造函数
private Single() {
}
//3.定义一个公有的方法,将创建的对象返回
public static Single getInstance() {
return s;
}
}
//懒汉式
class Single2 {
//1.new本类对象
private static Single2 s =null;
//2.私有化该类构造函数
private Single2() {
}
//3.定义一个公有的方法,将创建的对象返回
public static Single2 getInstance() {
if (s==null) {
s = new Single2();
}
return s;
}
}
public class Demo {
public static void main(String[] args) {
//得到该对象
Single ss = Single.getInstance();
}
}