영상
개념
<script>
class Student{
constructor(name , kor , eng){
this.name = name;
this.kor = kor;
this.eng = eng;
}
}
class StudentManager{
static instance = new StudentManager(); // 내부에서 static 변수로 자신을 생성한다.
static getInstance(){
return StudentManager.instance; // instance 는 그냥 변수명으로 바꿔도 상관없다.
}
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(){
}
printStudentInfo(){
console.log("전체학생")
let stManager = StudentManager.getInstance();
for(let i = 0; i < stManager.stList.length; i++){
console.log(stManager.stList[i])
}
}
}
class Professor{
constructor(){
}
searchStudentInfo(index){
let stManager = StudentManager.getInstance();
console.log("학생검색 : " , stManager.stList[index])
}
}
// let stManager = new StudentManager(); 이미 static으로 생성했기 때문에 또 생성하면 안된다.
let board = new Board();
let pro = new Professor();
board.printStudentInfo();
pro.searchStudentInfo(1);
/*
위와 같이 게시판(Board)이나 교수(Professor) 클래스에서
학생 정보를 사용하기 위해서는
학생매니저(StudentManager) 클래스를 일일이 전부 넣어줘야 한다.
이를 싱글톤 패턴을 사용하면,
보다 쉽게 사용가능하다.
*/
</script>
Java
복사