영상
개념
<script>
class Student {
constructor(name, kor, eng) {
/* 변수의 생성과 값 초기화를 동시에 할 수 있다. */
this.name = name;
this.kor = kor;
this.eng = eng;
}
printData() {
document.write("이름:" + this.name + ", 국어:" + this.kor + "점, 영어:" + this.eng + "점<br>");
}
}
class StudentManager {
constructor() {
this.stList = [];
let st1 = new Student("김철수", 100, 20);
let st2 = new Student("이만수", 20, 40);
this.stList.push(st1);
this.stList.push(st2);
}
}
class Board {
constructor(studentManager) {
this.studentManager = studentManager;
}
printStudentInfo() {
document.write("전체학생 정보<br>");
for(let i=0; i<this.studentManager.stList.length; i++) {
this.studentManager.stList[i].printData();
}
}
}
class Professor {
constructor(studentManager) {
this.studentManager = studentManager;
}
searchStudentInfo(index) {
document.write("학생 검색<br>");
this.studentManager.stList[index].printData();
}
}
let stManager = new StudentManager();
let board = new Board(stManager);
let professor = new Professor(stManager);
board.printStudentInfo();
professor.searchStudentInfo(1);
/*
위와 같이 게시판(Board)이나 교수(Professor) 클래스에서
학생 정보를 사용하기 위해서는
학생매니저(StudentManager) 클래스를 일일이 전부 넣어줘야 한다.
이를 싱글톤 패턴을 사용하면,
보다 쉽게 사용가능하다.
*/
</script>
Java
복사