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

알고리즘 할때 ArrayList를 자주 썼는데, 내부적으로는 어떻게 동작하는지 알아보기 위해 해당 포스팅을 작성해보려고 한다. ArrayList란? Java의 동적 배열인 ArrayList는 내부적으로 배열을 기반으로 하는 자료 구조이다. 크기를 동적으로 조절 가능하여 원소의 추가와 삭제가 용이하며, 랜덤 액세스에 강점을 가지고 있다. 중간에 원소를 추가하거나 삭제할 때는 다른 원소들을 이동시켜야 하므로 성능 저하가 있을 수 있다. 크기 조절은 현재 크기의 1.5 배로 확장하는 방식을 사용한다. 특히 동적인 데이터 크기 및 빈번한 원소 조작이 필요한 상황에서 적합한 자료구조이다. ArrayList의 동적 크기 확장의 메커니즘 ArrayList의 동적 크기 확장은 내부적으로 배열을 사용하며, 배열이 가득 ..

플라이웨이트 : 자주 변경되는 값과 아닌 값을 분리해서 재사용하는 방식이다. 아래 내용처러 문제에 대해 정의한 클래스가 있다고 가정해보자. 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. 이름을 가질 수 있다. (동일한 시그니처의 생성자를 두개 가질 수 없다.) 생성자에 넘기는 매개변수..