300x250
🍊 변수의 최솟값 최댓값 제한하기 변수의 값이 최솟값보다 작으면 최솟값을 갖게 하고, 최댓값보다 크면 최댓값 갖게 해서 변수의 값이 항상 최솟값과 최댓값 사이에 있도록 코드를 작성해 보자. 첫 번째, 분기문을 작성하면 간단하게 해결된다. if 분기문 public class App { private static final int MIN_VALUE = 0; private static final int MAX_VALUE = 100; public static void main(String[] args) { int result = processValue(105); System.out.println(result); // 100 } public static int processValue(int value){ if(v..
✍️ 빌더 패턴, 심플 빌더 패턴 본 포스팅에서 소개할 빌더는 심플 빌더 패턴으로 이전 포스팅에서 다룬 빌더-디렉터 패턴과 구현 방식이 사뭇 다르다. 빌더-디렉터 패턴은 객체를 생성하는 과정이 인터페이스로 추상화됐다면 심플 빌더 패턴의 빌더는 static inner class(이하 정적 내부 클래스)로 정의된다. 먼저 심플 빌더 패턴을 알아보기 전에 정적 내부 클래스에 대해 알아볼 필요가 있다. 🍊 정적 내부 클래스 정적 내부 클래스는 몇 가지 특징을 가지고 있다. 첫 번째, 이름에서 알 수 있듯 클래스의 내부에 정의된 클래스다. public class OuterClass { public static class InnerStaticClass { } } 두 번째, 외부 클래스의 인스턴스 없이 인스턴스 생성..
✍️ 빌더 패턴, 적용하기 빌더 패턴을 적용하려면 빌더 인터페이스를 만들어야 한다. 빌더 인터페이스는 일관된 프로세스로 인스턴스를 구성하고 생성할 수 있도록 추상화된 메서드를 제공해야 한다. public interface TourPlanBuilder { TourPlanBuilder title(String title); TourPlanBuilder nightsAndDays(int nights, int days); TourPlanBuilder startDate(LocalDate startDate); TourPlanBuilder whereToStay(String whereToStay); TourPlanBuilder addPlan(int day, String plan); TourPlan getPlan(); } ..
✍️ 빌더 패턴, 패턴 소개 빌더 패턴은 인스턴스를 생성하는 방법과 관련된 패턴으로 생성자와 깊은 연관이 있다. 상상해 보라, 클래스의 멤버 변수가 많고 모든 멤버를 한 생성자에서 초기화한다면 생성자를 호출하는 클라이언트는 각각의 매개변수가 어떤 멤버와 매칭하는지 직관적으로 이해하기 힘들고 실수로 매개변수 전달 순서를 바꿔 넣을 수 있다. 하물며 인스턴스는 그 목적에 따라 초기화가 필수인 멤버 변수가 있고 선택적인 멤버 변수가 있다. 초기화가 필수인 멤버 변수만을 위한 새로운 생성자를 정의하거나 선택적인 멤버 변수에 대응하는 매개변수에 null을 전달할 수도 있지만... 코드의 유지 보수나 가독성을 고려했을 때 그리 좋은 방법은 아닌듯하다. 이러한 문제들은 빌더 패턴을 사용하면 어느 정도 해결이 되는데,..
✍️ 구상 클래스(Concrete class)란? 콘크리트 클래스라고도 불리는 구상 클래스는 디자인 패턴에서 자주 등장하는 용어이기에 가볍게 정리하려 한다. 먼저, 구상(Concrete)이란 단어가 꽤나 낯설게 느껴지는데 추상(Abstract)과 대조적인 단어로 이해하면 쉽다. 추상이 구체적이지 않은 모호한 뜻을 가졌다면, 구상은 구체적이고 명확한 뜻을 가졌다. 프로그래밍에서 구상 클래스란 new 키워드로 객체를 생성할 수 있는 클래스를 말한다. 다르게 말하면, 클래스의 모든 메서드를 완벽하게 구현한 클래스라고 할 수 있다. 예를 들어, IronMan 클래스의 모든 메서드는 구현되어 있으므로 구상 클래스라 할 수 있다. public class IronMan { public void attack() { S..
✍️ 추상 팩토리 패턴, Java에서 찾아보기 Java의 javax.xml.parsers.DocumentBuilderFactory에서 추상 팩토리 패턴을 찾아볼 수 있다. Java는 xml형식의 문서를 객체화 시켜 살펴볼 수 있는 DocumentBuilder를 제공하는데 이는 DocumentBuilderFactory로부터 얻어올 수 있다. newInstance를 통해 얻어오는 DocumentBuilderFactory 타입의 객체가 ConcreteFactory에 해당하고 ConcreteFactory가 제공하는 DocumentBuilder가 추상화된 객체(제품)에 해당한다. public class DocumentBuilderFactoryExample { public static void main(String..