分为两个类,一个是学生类,另一个是main类
学生类

package cn.campsg.java.experiment;

public class Student {
	private String name;
	private int age;
	private static Student s = null;   //这里设置为静态变量,并且是私有类型的,设置初始为null,说明没有产生对象
	private Student(String name,int age){  //同时这里构造函数是私有的,只有在本类中才能进行调用
		this.name = name;
		this.age = age;
	}
	//静态方法调用的只能是静态的
	public static Student getInstence(String name,int age) //这里也定义是静态的,是公共的
	{
		//如果类内静态对象是null,说明并没有初始分配,所有要配置对象
		if(s == null){ 
			s = new Student(name,age);
			return s;
		}
		else
			return s;  //如果是原本类内存在,则就返回类内的,不能创建新的对象
	}
	//这个也是公共的,允许输出姓名及年龄
	public void getInfo(){
		System.out.println("姓名:"+this.name+" 年龄:"+this.age);
	}
}

main类:

package cn.campsg.java.experiment;

public class MainClass {
	//注意java中的main函数必须是静态的
	public static void main(String[] args){
		Student s = Student.getInstence("小王", 15);  //首先进行初始值
		s.getInfo();
		Student s1 = Student.getInstence("小li", 16); //此时再创建的时候,类内原本就有一个静态,所以无法重新创建一个新的对象
		s1.getInfo();
	}
}

运行结果
单子设计模式   (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)_java

这里我们看到最后都打印出了相同的姓名和年龄,
1.是因为在类内有一个静态的对象,并且在其中给构造函数进行私有属性。
2.使我们只能通过其中的公共函数接口来进行创建对象,此时会判断是否之前存在着类对象,存在即返回之前创建的,不存在的话进行初始化创建。

注意这里面先创建一个对象为null,这个对象为static是静态的,限制构造函数为私有的,使接口为static的用来判断是否创建新的对象,并且返回该对象