软件设计 石家庄铁道大学信息学院
实验7:单例模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解单例模式的动机,掌握该模式的结构;
2、能够利用单列模式解决实际问题。
[实验任务一]:学号的单一
仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。
实验要求:
1. 画出对应的类图;

2. 提交源代码;
import java.util.ArrayList;
import java.util.List;
class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
class StudentManager {
private List<Student> students;
public StudentManager() {
students = new ArrayList<>();
}
public void addStudent(Student student) {
for (Student s : students) {
if (s.getId() == student.getId()) {
throw new IllegalArgumentException("学号已存在");
}
}
students.add(student);
}
public Student getStudentById(int id) {
for (Student student : students) {
if (student.getId() == id) {
return student;
}
}
return null;
}
}
public class Main {
public static void main(String[] args) {
StudentManager manager = new StudentManager();
Student student1 = new Student(1, "张三");
Student student2 = new Student(2, "李四");
Student student3 = new Student(1, "王五"); // 尝试添加重复学号的学生,应抛出异常
manager.addStudent(student1);
manager.addStudent(student2);
try {
manager.addStudent(student3);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
Student foundStudent = manager.getStudentById(1);
if (foundStudent!= null) {
System.out.println("找到学生:" + foundStudent.getName());
}
}
}
3.注意编程规范。
浙公网安备 33010602011771号