实验7:单例模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解单例模式的动机,掌握该模式的结构;
2、能够利用单列模式解决实际问题。
[实验任务]:学号的单一
仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。
类图
源代码
public class StuID
{// 单例模式中的实例private static StuID instance = null;// 学号private String id;private StuID(){//私有构造函数,确保只能通过getInstance()获取实例}public static StuID getInstance(){if (instance == null){System.out.println("第一次办理校园卡,分配新学号");// 创建新的实例instance = new StuID();// 设置学号instance.setID("20213971");} else{System.out.println("重复办理校园卡,获取旧学号");}return instance;}//设置学号private void setID(String id){this.id = id;}//获取学号public String getID(){return this.id;}
}public class Client
{public static void main(String[] args){// 声明两个学号对象引用变量StuID id1, id2;// 获取第一个学号对象id1 = StuID.getInstance();// 获取第二个学号对象id2 = StuID.getInstance();// 检查两个学号对象是否相同System.out.println("学号是否一致: " + (id1 == id2));// 声明两个学号值变量String str1, str2;// 获取学号的值str1 = id1.getID();str2 = id2.getID();System.out.println("第一次学号: " + str1);System.out.println("第二次学号: " + str2);System.out.println("内容是否相等: " + (str1.equalsIgnoreCase(str2)));System.out.println("是否是相同对象: " + (str1 == str2));}
}
运行效果