[디자인패턴]싱글턴 패턴

gov's avatar
Nov 13, 2024
[디자인패턴]싱글턴 패턴
💡
Singleton pattern 생성자가 여러번 호출해도 실제 생성되는 객체는 한 개
Spring Framework에서 제공하는 빈(bean) 관리는 싱글턴 패턴을 구현 어노테이션을 사용해 빈을 정의
package ch04; public class App { public static void main(String[] args) { Doorman doorman = Doorman.instance; // 힙에 생성 Doorman doorman2 = Doorman.instance; // hashCode // 알고리즘에 의해 생성된 객체를 식별하는 하나의 정수 값 // 단방향 암호. 충돌확률 낮음 // 레퍼런스 자료 사이즈 측정 불가 -doorman데이터 크기 모름 // 두 도어맨 동일 여부 확인을 위해 hashCode 출력 System.out.println(doorman.hashCode()); System.out.println(doorman2.hashCode()); Cat cat = new Cat(); Mouse mouse = new Mouse(); doorman.쫓아내(cat); doorman.쫓아내(mouse); } }
package ch04; // 클래스 로딩 시 한 번만 인스턴스 생성되고, 외부 접근이 쉬워짐 public class Doorman { // Doorman의 유일한 인스턴스 유지 및 싱글턴 핵심 개념 달성(단일 인스턴스) static Doorman instance = new Doorman(); // public을 private 생성자 변경 // 외부 인스턴스 생성 불가로 설정하여 단일 인스턴스 유지 private Doorman() {} public void 쫓아내(Animal animal) { System.out.println(animal.getName() + " 쫓아내"); } }
package ch04; public abstract class Animal { public abstract String getName(); } package ch04; public class Mouse extends Animal { private String name = "쥐"; public String getName() { return name; } } package ch04; public class Cat extends Animal { private String name = "고양이"; public String getName() { return name; } }
Share article

goho