목록분류 전체보기 (181)
초보개발자 긍.응.성
단순히 정적 메서드와 정적 필드를 담은 클래스를 만들어야 할 때가 있다. 그 예시는 다음과 같다. java.lang.Math, java.util.Arrays: 같이 기본 타입 값이나 배열 관련 메서드를 모아놓은 클래스 java.util.Collections: 특정 인터페이스를 구현하는 객체를 생성해 주는 정적 메서드를 담은 클래스 final 클래스와 관련한 메서드 (final 클래스를 상속해서 하위 클래스에 메서드를 넣을 수 없기 때문). 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 것이 아니다. 하지만 생성자를 명시하지 않으면 자바 컴파일러가 자동으로 기본 생성자를 만들어준다. 이로 인해 매개변수를 받지 않는 public 생성자가 자동으로 만들어지며, 사용자는 이 생성자에 대해 ..
싱글턴 (Singleton) 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴의 전형적인 예로는 함수와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기 어려워질 수 있다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 mock 구현으로 대체할 수 없기 때문이다. 싱글턴을 만드는 방법 싱글턴을 만드는 방식은 보통 아래를 따른다. 생성자는 private 으로 감춘다 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 마련한다. public static 멤버는 두 가지 방법으로 구현 가능하다. 하..
정적 팩토리나 생성자에는 선택적 매개변수가 많을 때 적절히 대응하기 힘들다는 단점이 존재한다. 이런 단점들을 빌더를 이용하여 해결할 수 있다. 선택적 매개변수가 많은 경우 정측적 생성자 패턴, 자바빈즈 패턴, 빌더 패턴을 이용하여 해결하는 방법들과, 그중 빌더 패턴이 갖는 장점과 단점에 대해 알아보자. 1. 점층적 생성자 패턴 (telescoping constructor pattern) 필수 매개변수와 선택 매개변수를 받는 생성자 부터 선택 매개변수를 전부 다 받는 생성자까지 늘려가며 만들어 놓는 방식이다. 하지만 이 방법은 매개변수의 개수가 많아질수록 클라이언트 코드를 작성하거나 읽기 어렵다. 의미를 파악하기 힘들며 어려운 버그로 이어질 수 있다. public class NutritionFacts { ..
클래스는 클라이언트에 public 생성자 대신 정적 팩토리 메서드를 제공할 수 있다. 정적 팩토리 메서드가 생성자보다 좋은 다섯 가지 이유는 다음과 같다. public 생성자와 비교할 때의 정적 팩토리 메소드의 장점 1. 이름을 가질 수 있다 생성자의 이름은 반드시 클래스이름이어야 한다. 그렇기 때문에 생성자에 전달하는 매개변수와 생성자 자체 만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반명 정적 팩토리 메서드는 네이밍(Naming)이 자유로워 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 입력 매개변수에 따라 다른 객체를 넘겨주게 한다면 생성자도 여러 가지 방법으로 생성을 달리할 수 있지만, 이 방법은 좋지 않다. 하지만 이름을 구별하기 쉽게 지어준다면 이러한 문제는 발생하지..
Servlet 구조 분석(6) - HttpServletRequest에 이어 HttpServletResponse에 대해 알아보았습니다. Servlet 구조 분석(6) - HttpServletRequest Servlet 구조 분석(4) - ServletRequest , (5) - ServletResponse 스터디를 통해 Servlet에서 얻을 수 있는 요청과 응답 서블릿에 대해 알아보았습니다. 이어서 HTTP Protocol을 위해 만들어진 서블릿, HttpServle.. ckddn9496.tistory.com 9. Interface HttpServletResponse ServletResponse의 sub-interface이다. HttpServletRequest와 같이 서블릿 컨테이너가 HttpServle..
Servlet 구조 분석(4) - ServletRequest , (5) - ServletResponse 스터디를 통해 Servlet에서 얻을 수 있는 요청과 응답 서블릿에 대해 알아보았습니다. 이어서 HTTP Protocol을 위해 만들어진 서블릿, HttpServlet에서 사용하는 HttpServeltRequest와 HttpServletResponse에 대해 알아보았습니다. Servlet 구조 분석(5) - ServletResponse Servlet 구조 분석(4) - ServletRequest 에 이어서, Servlet interface의 service 메서드의 파라미터로 들어오는 응답, ServletRespone에 대해 분석해보았습니다. Servlet 구조 분석(4) - ServletRequest ..