목록JAVA (92)
도당탕탕
클래스를 사용할 때 대부분의 클래스는 하나 이상의 자원을 사용할 것이다. 그중 Utility 클래스나 싱글톤 클래스를 만들어 자원을 효율적으로 사용할 수 있다. 하지만 이는 다음과 같은 문제가 발생할 수 있다. 다음 예를 들어 보자. Utility 클래스의 검시기 사전 public class SpellChecker { private static final Dictionary dictionary = ...; private SpellChecker() {} public static boolean isValid(String word) { ... } public static List suggestions(String typo) { ... } } Singleton 클래스의 검시기 사전 publicclass Spel..
싱글톤 패턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 즉 함수와 같은 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 싱글톤 패턴으로 클래스 오브젝트가 만들어지면 어플리케이션 내에서 전역으로 해당 오브젝트를 사용할 수 있다. 하지만 싱글턴 패턴은 다음과 같은 단점이 있다. 바로 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워 질수 있다는 것이다. 싱글톤이 인터페이스로 정의해서 만든 것이 아니라면 Mock 으로 대체해 테스트 하기가 어렵기 때문이다. 물론 테스트가 아예 안되는 것은 아니다. PowerMock같은 도구를 통해 정적 메소드를 테스트 하게 할 수 있고 Mockito 3.4.0 버전에서는 정적 메소드를 지원해 준다고 한다. 싱글톤 패..
생성자나 정적 팩터리 메소드에서는 매개변수가 많을 경우 개발자가 대응하기 어렵다는 제약이 있다. 이렇게 말로 표현하면 와닿지 않을 수 있다. 그래서 밑에 비디오 클래스를 예를 들어보려고 한다. 비디오 클래스에는 다음과 같은 필드가 존재한다. 비디오 아이디 (필수) 비디오 타이틀 (필수) 비디오 설명 (선택) 비디오 등록 날짜 (선택) 비디오 파일 (필수) 비디오 썸네일 이미지 (선택) 단 필수로 받는 필드는 비디오 아이디, 타이틀, 비디오 파일이고, 선택으로 받는 필드는 비디오 등록 날짜, 썸네일 이미지, 설명이라고 정의 하자. 점층적 생성자 패턴 프로그래머들은 점층적 생성자 패턴을 즐겨 사용할 것이다. 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수 2개..
클라이언트가 클래스의 인스턴스를 얻는 수단은 2가지의 방법이 있다. public 생성자로 인스턴스를 제공하는 방법 생성자와 별도로 정적 팩토리 메서드로 제공하는 방법 - 클래스 인스턴스를 반환하는 단순한 정적 메소드 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 2번째 방법은 public 생성자 대신 정적으로 생성자를 제공할 수 있다. 이 방식에는 장점과 단점이 모두 존재한다. 이 장단점을 지금 부터 알아보려고 한다. 정적 팩토리 메소드의 장점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 하지만 정적 팩토리 메소드를 사용하면 반..