아마 밑에 질문글은
싱글톤 패턴을 말하는거 같은데
싱글톤 패턴은 안티 패턴에 가깝긴함. 왜냐하면 기본적으로 OOP의 원칙을 어기기 쉽기때문에.
참고로 여기서 OOP 원칙은 SOLID라고 하는거 물론, 캡슐화,상속,다형성 어쩌구 저쩌구하는데
사실 이런건 이해하기가 어렵기때문에 이걸 쉽게 풀어 쓴 SOLID 원칙으로 이해하는거야.
싱글톤 패턴은 전역 접근점 제공을 통해서,
관리자원을 공통적 관리해서 리소스를 아끼기 위해서가 맞고, 클래스를 사용하는 이유는 인스턴스를 여러개 생성하는거 맞는데, 클래스는 상속만을 위한게 아님
물론 싱글턴 패턴은 멀티 쓰레딩할때 문제가 발생하긴한데 이것도 막는 여러 테크닉도 있고,
설정 같은 중요한, 즉 여러개 생성되면 문제가 되는 값들을 하나로 써서 전역에서 참조하기 위해서 쓰거나 하는거임.
일반적으로 OOP에서 클래스는 캡슐화,상속,다형성 이 3가지를 핵심으로 보는데, 이것을 구현하기 위한 도구일뿐임.
따라서 패턴은 선배들이 쓰는 일종의 테크닉이라는 관점으로 접근해야함
코딩은 문예 창작과 같음. 문창과에서 글쓰기 방법 배우듯이 선배가 어떻게 문제를 해결했나 이런거
따라서 아래글의 질문자는 기분나쁘게 들릴 수 있지만 OOP랑 패턴을 좀 잘못 이해하고 있다고 봐야함
GOF Gang of Four는 두꺼운 책이라 좀 읽기 어려우니까
https://refactoring.guru/ko/design-patterns
그걸 쉽게 쓴 위의 사이트를 참조하면서 감을 익히는게 중요함
동시성 문제가 일어나면 안되는 객체들(OS 자원 관리하는 객체들은 자바는 싹 다 싱글톤) 생각해보면 0.00001정도 이해감니더. 가깝게는 관리하는 개념의 접근은 스프링 빈 생각해보면 아핫 이지만.