반응형
안녕하세요 돼지왕왕돼지입니다.
오늘은 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를 만들지 못하니.. )
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 디자인 패턴, 리펙토링' 카테고리의 다른 글
[Design Pattern/Java] 쓸모 없는 객체 참조를 제거하자. (0) | 2012.02.10 |
---|---|
[Design Pattern/Java] 불필요한 객체의 생성을 피하자. (0) | 2012.02.10 |
[Design Pattern/Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자. (0) | 2012.02.10 |
[Design Pattern/Java] 생성자의 매개변수가 많을 때는 빌더(Builder) 를 고려하자. (1) | 2012.02.10 |
[DesignPattern] Design Pattern에서 성능 향상에 Critical한 Cache Management Pattern에 대해 파헤쳐 봅시다. (0) | 2012.01.23 |
댓글