목록기술 서적 (17)
개발자는 기록이 답이다
정적 팩터리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을때 적절히 대응하기 어렵다는 점이다. 생성자 패턴 1. 점층적 생성자 패턴 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수 2개까지 받는 생성자,... 형태로 선택 매개변수를 전부 다 받는 생성자자까지 늘려가는 방식이다. 즉, 필수 인자를 받는 생성자를 정의한 후, 선택적 인자를 하나씩 추가해가며 정의하는 것이다. package org.example.item02; public class NutritionFacts { private final int servingSize; // 필수 private final int servings; // 필수 private final int calori..

플라이웨이트 : 자주 변경되는 값과 아닌 값을 분리해서 재사용하는 방식이다. 아래 내용처러 문제에 대해 정의한 클래스가 있다고 가정해보자. public class Character { private char value; private String color; private String fontFamily; private int fontSize; public Character(char value, String color, String fontFamily, int fontSize) { this.value = value; this.color = color; this.fontFamily = fontFamily; this.fontSize = fontSize; } } 위의 코드는 너무 무겁다. 자주 변경되지 않은 ..

Static Factory Method(정적 메소드) 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단 : public 생성자 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다 // boolean의 기본 타입의 값을 받아 Boolean 객체 참조로 변환 public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } ※ 정적 팩터리 메서드는 디자인 패턴에서의 팩터리 메서드(Factory Method)와다르다. 디자인 패턴 중에 이와 일치하는 패턴은 없다. 장점 1. 이름을 가질 수 있다. (동일한 시그니처의 생성자를 두개 가질 수 없다.) 생성자에 넘기는 매개변수..

4. 자율적인 객체를 향해 캡슐화를 지켜라 캡슐화는 설계의 제 1원리이다. 데이터 중심의 설계가 낮은 응집도와 높은 결합도라는 문제를 가진 것은 캡슐화의 원칙을 위반했기 때문이다. 객체는 자신이 어떤 데이터를 가지고 있는지를 내부에 캡슐화하고 외부에 공개하면 안된다. 스스로의 상태를 책임져야 하며 외부에서는 인터페이스에 정의된 메서드를 통해서만 상태에 접근할 수 있어야 한다. 여기서 메서드란 단순히 속성 하나의 값을 반환하거나 변경하는 접근자나 수정자를 의미하는게 아니다! 객체가 책임져야 하는 무언가를 수행하는 메서드다! 속성의 가시성을 private으로 설정했다고 해도 접근자와 수정자를 통해 속성을 외부로 제공하고 있다면 캡슐화를 위반하는 것이다. 사각형을 표현하는 간단한 클래스를 살펴보자. 아래 클래..