본문 바로가기
반응형

Java97

[Effective java] Item4 인스턴스화를 막으려거든 private 생성자를 사용하라 > _아직 Item4까지 밖에 보지 않았지만 정말 개발을 하면서 신경쓰지 않았던 부분에 대해서 다시한번 반성하고 배워가게 되는 책인것 같습니다. Item4 같은 경우는 간단하게 보고 넘어가도 될듯 하여 짧게 포스팅을 하려고 합니다 . ```java public class Utility { // 기본생성자를 막기 위해 private 사용 private Utility () { // 기본생성자를 통한 객체 생성 방지를 위해 throw 발생 throw new Exception(); } } ``` 자동으로 생성된 생성자가 아닌 명시적으로 만든 생성자가 private이기 때문에 클래스의 외부에서는 접근 불가능합니다. 따라서 어떤 환경에서도 클래스가 인스턴스화 되는것을 막을 수 있다. throw new Excepti.. 2020. 12. 10.
[Effective Java] Item3 private 생성자나 열거 타입으로 싱글턴임을 보증하라 Item3까지 오게 되었습니다. 바로 시작해보겠습니다. Effective Java에서의 Item3에서는 private 생성자나 열거타입으로 싱글턴임을 보증하라는 내용입니다. 일단 싱글턴에 대해 알아보겠습니다 . 싱글턴(singleton) 이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 자바, 스프링을 개발해보셨다면 누구나 들어보셨을만한 내용입니다. 싱글턴객체의 예로는 Item24에 나오는 함수와 같은 무상태 객체나 설계상에 유일해야하는 시스템 컴포넌트를 예로 들 수 있다. 주의해야하는상황은 클래스를 싱글턴으로 만들게 된다면 사용하는 클라이언트를 테스트하기가 어려워진다. 싱글턴을 만드는 방식은 보통 두가지 방법이 있는다 두방식 모두 생성자는 private로 감춰두고 유일한 인스턴스에 접근할.. 2020. 12. 10.
[Effective Java] Item2 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩토리와, 생성자를 통해 인스턴스를 생성할때에는 공통된 제약이 하나있습니다. 바로 선택적 매개변수가 많을경우 적절한 대응이 어렵다는 점입니다. 다음과 같은 TimeUtil이 있다고 가정하겠습니다. 지금은 예로 만들어서 클래스 내부에 년월일시분초를 의미하는 6개의 프로퍼티가 존재합니다. 이 TimeUtil 인스턴스를 생성하려면 만들고자하는 매개변수를 모두 포함한 생성자중 가장 짧은 골라 호출해야합니다. public class TimeUtil { private int year; private int month; private int day; private int hour; private int minute; private int second; public TimeUtil(int year, int mon.. 2020. 12. 10.
[Effective Java] Item1 생성자 대신 정적 팩터리 메서드를 고려하라 신입시절부터 개발을 시작하여 어느덧 3년차를 지나가는 시기에 Effective Java, 객체지향의 사실과 오해, 오브젝트 , Clean Code라는 책을 추천받아서 읽어볼 수 있는 기회가 생겼습니다. 혼자 읽고 다 익힐 자신이 없어서 이렇게 글로 작성하면서 어떻게 동년차 개발자가 이해했는지 공유하고자 합니다. 오탈자 , 틀린부분 , 잘못된부분에 대해서는 지적 및 조언주시면 감사히 받겠습니다. 그러면 시작하겠습니다. 클라이언트가 클래스으 인스턴스를 얻는 정통적인 수단은 public 생성자를 통해 얻는 방법이다. 하지만 알아둬야할 기법이 하나 더 있다. 클래스는 생성자와 별도로 정적 팩터리 메서드를 제공할 수 있다. ( 시작부터 막혔다.. 정적 팩터리 메서드가 뭘까 ...) 일단 책에서 장점과 단점이 나오.. 2020. 12. 10.
반응형