본문 바로가기
프로그래밍 놀이터/디자인 패턴, 리펙토링

[Design Pattern/Java] private 생성자를 사용해서 인스턴스 생성을 못하게 하자.

by 돼지왕왕돼지 2012. 2. 10.


안녕하세요 돼지왕왕돼지입니다.
오늘은 private 생성자를 사용해서 인스턴스 생성을 못하게 하자. 라는 내용을 함께 알아보고자 합니다.
이 글은 "Effective Java" 를 기반으로 합니다.


언제 쓰는가?


static method 와 static field 만을 모아 놓은 클래스를 만들 필요가 종종 있습니다. 예를 들자면, Utility class 들이 있죠, ( 대표적 ex) Math ) 이런 친구들은 인스턴스를 생성하지 못하게 설계되어야 합니다. 인스턴스 생성이 무의미하기 때문이죠.
 


왜 그렇게 해야 하는가?


생성자가 없을 경우 컴파일러는 기본적으로 default constructor 를 생성합니다. 고로 Compiler 덕에 생성가능한 객체가 됩니다.
간혹 abstract class 로 만들어 생성 불가능하게 하는 것을 방법으로 생각 할 수 있는데, 잘못된 방법입니다. Subclass 는 instance 화 할 수 있고, 해당 class 가 상속을 위해 만들어진 class 로 오해를 받기 쉽기 때문입니다.



그럼 방법은?


- private constructor 를 만들어서 인스턴스 생성을 못하게 합니다. ( API doc 에도 나타나지 않죠. )
 
- private constructor 의 약점은.. Subclass 를 만들 수 없다는 것입니다. ( Super 의 Constructor를 만들지 못하니.. )

 
로그인 없이 추천 가능합니다. 손가락 꾸욱~

댓글0