private 으로 생성자를 만들경우 외부에서 인스턴스를 만드는것을 차단 할 수 있다.
이는 싱글톤 패턴을 구현할때 유용하게 사용된다.
싱글톤 패턴이란 객체를 하나만 생성하도록 제한하고, 생성된 객체를 어디에서 든지 참조 할 수 있도록 하는 패턴이다.
예를 들어, 사용자 2명이 MemberService 인스턴스를 호출한다 가정하는 코드이다.
싱글톤 패턴으로 구현하지 않았기 때문에 각 인스턴스 호출시 매번 인스턴스를 새로 생성한다.
웹서비스라 가정 했을때 동시 접속자가 5000명이라면 5000개의 인스턴스를 생성해야한다.
싱글톤 패턴은 이를 효율적으로 해결할 수 있다.
싱글톤 패턴을 구현한 코드이다. private 생성자가 사용된다.
내부에서 싱글톤 인스턴스를 하나만 구현하고,
접근은 오직 getInstance 메소드를 통해 할 수 있으며,
외부에서 인스턴스를 생성 할 수 없다.
private 생성자를 통해 위 코드 처럼 외부에서 인스턴스를 생성하려 할 경우 컴파일 오류가 뜬다.
싱글톤 패턴을 통해 한 인스턴스를 어디서든 참조 할 수 있다.
같은 인스턴스임을 보여주는 사진이다.
<이점>
싱글톤 패턴은 최초 한번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 객체를 접근 할때 메모리 낭비를 방지 할 수 있고, 생성된 인스턴스를 사용하기 때문에 속도 측면에서도 이점이 있을 수 있다.
또한 언제 어디서든 참조 할수 있기 때문에 데이터 공유가 쉽다.
<단점>
싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다.
구체화된 클래스에 의존하게 된다. -> DIP 위반
유연성이 떨어진다