单例模式在java中应用很多特别是在学生管理系统等,主要应用与管理员用户等,本实例中有三种方式进行创建单例模式 ,分别是懒汉模式,和饿汉模式
以及使用枚举进行单个用户的创建。
懒汉模式
package 常用类;
public class text1 {//懒汉模式
private String name;
private int sex;
private static text1 text1=null;
private text1(String name, int sex) {
super();
this.name = name;
this.sex = sex;
}
public static text1 gettext1() {
if (text1==null) {
text1=new text1("张三",18);
}
return text1;
}
public String getName() {
return name;
}
public int getSex() {
return sex;
}
public static text1 getText1() {
return text1;
}
}
饿汉模式
package 常用类;
public class tear2 {
String name="";
int sex;
private static tear2 sexe=new tear2("张三", 13);
private tear2(String name, int sex) {
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public int getSex() {
return sex;
}
public static tear2 gettear2() {
return sexe;
}
}
枚举方式
package 常用类;
public enum test3 {
stu1(13,"张三");//枚举模式
private int sex;
private String name;
private test3(int sex, String name) {
this.sex = sex;
this.name = name;
}
}
main方法进行测试
package test;
import 常用类.tear2;
import 常用类.test3;
import 常用类.text1;
public class main {
public static void main(String[] args) throws CloneNotSupportedException {
//测试懒汉模式
text1 f1=text1.gettext1();
text1 f2=text1.gettext1();
if(f1==f2) {
System.out.println("他们是一个对象");
}else {
System.out.println("他们不是一个对象");
}
//测试饿汉模式
tear2 g1=tear2.gettear2();
tear2 g2=tear2.gettear2();
if(g1==g2) {
System.out.println("他们是一个对象");
}else
{
System.out.println("他们不是一个对象");
}
test3 stu1=test3.stu1;
test3 stu2=test3.stu1;
if(stu1==stu2) {
System.out.println("他们是一个对象");
}
}
}
在java中懒汉模式与饿汉模式各有优缺。