본문 바로가기
[Effective Java] private 생성자를 사용해서 인스턴스 생성을 못하게 하자. private 생성자를 사용해서 인스턴스 생성을 못하게 하자. - static 메소드와 static 필드만을 모아 놓은 클래스를 만들 경우 private 생성자를 사용해서 인스턴스 생성을 못하게 하자. - 명시적으로 지정한 생성자가 없을 때는 컴파일러가 디폴트 생성자 ( default constructor ) 를 생성한다. 이는 javadoc 프로그램으로 생성하는 API 문서에도 나타나므로 인스턴스 생성이 가능한 클래스로 오인될 수 있다. public class UnilityClass{ private UtilityClass(){ throw new AssertError(); } ... } - 이 방법은 sub class 를 가질 수 없다는 단점이 있지만, Utility 함수들은 대부분 상속을 위해 설계되지.. 2015. 4. 5.
[Effective Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자. [Effective Java] private 생성자나 enum 타입을 사용해서 싱글톤의 특성을 유지하자. -싱글톤(singleton) 은 정확히 하나의 인스턴스만 생성되는 클래스. -기존에 싱글톤을 구현하는 구현하는 방법은 2가지.1. 생성자를 private 으로 하고, 유일한 인스턴스에 접근할 수 있도록 public static 맴버를 외부에 제공.2. 위와 조건은 같지만 member 변수를 public 으로 하는 대신 factory 메소드를 통해 instance 를 전달한다. 2번의 방법은 factory 메소드의 장점을 함께 갖기 때문에 조금 더 좋은 방법이다.( 조건에 따라 다른 instance 를 return 할 수 있다. ) 위의 두가지 방법은 해당 class 를 직렬화 할 때 손이 많이 간다... 2015. 2. 25.
[Effective Java] 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자. - static 팩토리 메소드와 생성자는 공통적 제약이 있다. 선택가능한 매개변수가 많아질 경우 신축성 있게 처리하지 못한다. - 텔레스코핑 생성자(telescoping constructor) 패턴이 대안이 될 수 있으나, 마찬가지로 매개변수 수가 증가하면 무척 번거로워 진다. 가독성도 떨어지고, 유지보수도 어려워진다. ( 갯수를 세고 의미를 파악하는데만도 한세월~ ) - 자바빈즈(Java Beans) 패턴이 두번째 대안이 될 수 있으나, 이 패턴은 심각한 단점을 가지고 있다. 여러 번의 메소드 호출로 나누어져 인스턴스가 완성되기 때문에 객체가 일관된 상태를 유지하지 못할 수 있다. ( multi thread 환경 ) 또한 자바빈즈는 불변 .. 2015. 2. 8.
[Effective Java] 생성자 대신 static 팩토리(factory) 메소드 사용을 고려하자. 생성자 대신 static 팩토리(factory) 메소드 사용을 고려하자. -일반적인 instance 생성 방법은 생성자(constructor)를 이용하는 것. - 클래스에 public static 팩토리 메소드를 두는 것이 더 유용하다. - public static 팩토리 메소드의 장점 1. 생성자와 달리 자기 나름의 이름을 가질 수 있다. 2. 동일한 시그너처를 갖는 복수의 생성자를 갖는 효과를 누린다. 3. 호출될 때마다 매번 새로운 객체를 생성할 필요가 없다. 불변 클래스의 경우 이미 생성된 인스턴스를 다시 사용할 수 있다. 중복 생성 방지를 할 경우에도 사용된다. ( singleton ) 4. 자신이 아닌 서브타입(subtype) 객체도 반환할 수 있다. interface 와 혼합하여 사용하면 유.. 2014. 9. 8.
[Effective Java] 핵심정리 다시 시작. Java 프로그래머라면 누구나라도 읽어봐야 할 필독서 중 하나인 Effective Java. 이전에 정리를 진행했었는데, 누군가가 내 글을 심도있게 볼 수 있다는 가정 하에 너무 형식을 맞추어 쓰다 보니, 의지박약에 빠지면서 얼마 하다가 접었었다. 이번에 다시 처음부터 정리해봐야겠다. 원래 취지에 맞게 나의 저장소의 느낌으로 내가 깔끔하게 알아보면 되는 방식으로 정리해봐야지. 아!! 혹시라도 이 포스트 시리즈를 열독하실 분이시라면, 꼭 책을 사서 한번은 정독한 후에 다시 한 번 보며 정리하시길 강추 드립니다. 책 내용이 조금 어렵기는 하지만 자바 중급 개발자 이상으로 성장하고 싶으시다면 읽어볼 가치가 충만한 그런 책입니다. 그럼 다시다시 화이팅~!! 2014. 9. 6.
반응형