11.10
今天完成了高飞老师布置的实验7
1.┌─────────────────┐
│ Student │
├─────────────────┤
│ - instance: Student │
│ - studentId: String │
├─────────────────┤
│ - Student() │
│ + getInstance(): Student │
│ + getStudentId(): String │
│ + setStudentId(String): void │
└─────────────────┘
2.源代码
/**
-
单例模式实现学号唯一性
-
确保每个学生对象只有一个学号
*/
public class Student {
// 静态实例变量,用于保存唯一的实例
private static Student instance;// 学号属性
private String studentId;/**
- 私有构造函数,防止外部直接创建实例
*/
private Student() {
// 初始化代码可以放在这里
this.studentId = "未分配";
}
/**
- 获取Student类的唯一实例
- 使用懒汉式单例模式,第一次调用时创建实例
- @return Student类的唯一实例
*/
public static Student getInstance() {
if (instance == null) {
instance = new Student();
}
return instance;
}
/**
- 获取学生学号
- @return 学生学号
*/
public String getStudentId() {
return studentId;
}
/**
- 设置学生学号
- @param studentId 要设置的学生学号
*/
public void setStudentId(String studentId) {
this.studentId = studentId;
}
/**
- 显示学生信息
*/
public void displayStudentInfo() {
System.out.println("学生学号: " + studentId);
}
}
- 私有构造函数,防止外部直接创建实例
/**
-
测试类,演示单例模式的使用
*/
public class SingletonPatternDemo {
public static void main(String[] args) {
// 获取Student的唯一实例
Student student1 = Student.getInstance();
Student student2 = Student.getInstance();// 设置学号 student1.setStudentId("202301001"); // 显示两个实例的学号 System.out.println("学生1的学号: " + student1.getStudentId()); System.out.println("学生2的学号: " + student2.getStudentId()); // 验证两个实例是否相同 System.out.println("student1 和 student2 是同一个实例: " + (student1 == student2)); // 通过第二个实例修改学号 student2.setStudentId("202301002"); // 再次显示两个实例的学号 System.out.println("修改后学生1的学号: " + student1.getStudentId()); System.out.println("修改后学生2的学号: " + student2.getStudentId()); // 显示学生信息 System.out.println("\n学生信息:"); student1.displayStudentInfo();}
}

浙公网安备 33010602011771号