싱글톤
생성자가 프라이빗이다
바깥에서 생성이 불가능 함
사용하고 싶은 클래스내부의 변수 및 클래스 생성자를 전부 프라이빗으로 설정하고 게터를 퍼블릭 스태틱 메소드로 만든 후 변수를 반환해주면 싱글톤이다
스태틱이므로 외부에서 불러도 알아서 불러짐
di : 의존성 주입
[예시]
[A 클래스]
public class A {
private static A instance = null;
private Student[] students;
private A() {
students = new Student[3];
}
public static A getInstance() {
if(instance == null) {
instance = new A();
}
return instance;
}
public void addStudent(Student student) {
for(int i = 0; i < students.length; i++) {
if(students[i] == null) {
students[i] = student;
return;
}
}
System.out.println("더 이상 학생을 추가할 수 없습니다.");
System.out.println();
}
public void showStudents() {
for(Student student : students) {
System.out.println(student);
}
System.out.println();
}
}
[B 클래스]
public class B {
public void insertStudent() {
Scanner scanner = new Scanner(System.in);
System.out.print("학생이름 : ");
String name = scanner.nextLine();
Student student = new Student(name);
A.getInstance().addStudent(student);
A.getInstance().showStudents();
}
}
[C 클래스]
public class C {
public void showAll() {
A.getInstance();
}
}
[Main]
public class Main {
public static void main(String[] args) {
A a = A.getInstance();
B b = new B();
C c = new C();
for(int i = 0; i < 4; i++) {
b.insertStudent();
}
System.out.println("C에서 학생 전부 출력");
c.showAll();
}
}
'백엔드개발자 준비하기' 카테고리의 다른 글
[백엔드개발자 준비하기] 컬렉션 (0) | 2023.01.31 |
---|---|
[백엔드개발자 준비하기] 제네릭 (0) | 2023.01.31 |
[백엔드개발자 준비하기] 스태틱(Static) (0) | 2023.01.31 |
[백엔드개발자 준비하기] 오브젝트클래스 (0) | 2023.01.11 |
[백엔드개발자 준비하기] 인터페이스 (0) | 2023.01.11 |