package shejimoshi;
/*
* 单例设计模式
*
* 想要保证对象的唯一
* 1、为了避免其他程序过多建立本对象。先禁止其他对象建立该类对象
* 2、嗨为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象。
* 3、为了方便其他其他程序对该对象的访问,可以对外提供一些访问方式。
*
* 代码体现:
* 1、将构造函数私有化
* 2、在类中创建一个本类对象
* 3、提供一个方法可以获取到该对象
*
*
* 对于事物该怎么描述还是怎么描述
* 当需要该事物的对象保证在内存中唯一时,就将以上的三步加上即可
* */
//class Single{
// private int num;
// public void setNum(int num){
// this.num=num;
// }
// public int getNum(){
// return num;
// }
// private Single(){};
//
// private static Single s=new Single();
//
// public static Single getInstance(){
// return s;
// }
//}
//public class SingleDemo {
// public static void main(String[] args) {
// Single s1=Single.getInstance();
// Single s2=Single.getInstance();
// s1.setNum(21);
// System.out.println(s2.getNum());
//
// }
//
//}
class Student{
//先初始化对象
//饿汉式
private static int age;
private static Student s=new Student();//在堆中的对象
private Student(){};
public static Student getStudent(){ //共有的静态的返回本类对象的方法
return s;
}
public void setAge(int age){
this.age=age;
}
public static int getAge(){
return age;
}
}
public class SingleDemo {
public static void main(String[] args) {
Student s1=Student.getStudent();
Student s2=Student.getStudent();
s1.setAge(21);
System.out.println(s2.getAge());
}
}
package shejimoshi;
//对象是方法被调用时,才初始化,也叫作对象的延时加载,称为:懒汉式
public class SingleDemon2 {
}
class single{
private static single s=null;
private single(){};
public static single getInstance(){
if(s==null){
s=new single();
}
return s;
}
}