#单例模式(java)
单例模式分为两种,懒汉模式和饥饿模式
单例者模式最重要一点是构造方法私有化,当别人要使用这个类时,没有无参的构造方法就没有办法new这个类,只能使用通过静态方法用getInstance来使用这个类,
public class Teacher {
private int age;
private String name;
private double number;
private static Teacher s = new Teacher; // 饿汉 上来先new一个Teacher在这里,
**private Teacher() {
}**
public static Teacher getInstance() {
if(s==null) {
s = new Teacher(); //懒汉,当你使用Student,而Student为空,内存此时才来new对象,
// 两种区别不大,两种模式写其中一种即可(萌新,如有错误请纠正)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191206201353988.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzQyNzI2,size_16,color_FFFFFF,t_70)
}
return s;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getNumber() {
return number;
}
public void setNumber(double number) {
this.number = number;
}
```## 测试
public static void main(String[] args) {
Teacher t = Teacher.getInstance();
t.setName(“小明”);
t.setAge(18);
t.setNumber(5000);
Teacher t2 = Teacher.getInstance();
t2.setName(“小红”);
t2.setAge(189);
t2.setNumber(666);
System.out.println(t==t2); //t和t2共用一个对象
System.out.println(t.getName());//原本t的名字是小明此时已经改成小红
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191206201420490.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzQyNzI2,size_16,color_FFFFFF,t_70)