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();
    

    }
    }

posted @ 2025-11-10 23:43  山蚯  阅读(4)  评论(0)    收藏  举报