实现单例模式【23中设计模式之一】
单例模式要领:
1、构造方法私有化
2、对外提供一个公开的静态的获取当前类型对象的方法
3、提供一个当前类型的静态变量
优点:
保证java虚拟机中这个类型的对象永远只有一个
节省内存空间
缺点:
构造方法私有化,子类方法无法调用父类的方法,所以单例模式的类型无法被继承——单例模式的类型没有子类
单例模式分为两种:
饿汉式单例:在类加载阶段就创建了对象
懒汉式单例:用到对象的时候才会创建对象【推荐】
public class Monitor{//懒汉式单例
private String name;
private int id;
private double grade;
//构造函数私有化,外部无法创建对象
private Monitor(){
}
//静态变量
private static Monitor m;
//定义方法,外部类获得对象
public static Monitor rtMonitor(){
if(m == null){
m = new Monitor();
}
return m;
}
//set get
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
}
public class Headmaster {//饿汉式单例模式
//构造方法私有化
private Headmaster(){
}
//类加载时只执行一次
private static Headmaster h = new Headmaster();
//提供公开的方法
public static Headmaster rtHeadmaster(){
return h;
}
}
public class Test{
public static void main(String[] args){
Headmaster maimai = Headmaster.rtHeadmaster();
Monitor zjm = Monitor.rtMonitor();
}
}