목록객체 (16)
개발자는 기록이 답이다
8장에서는 유연하고 재사용 가능한 설계를 만들기 위해 적용할 수 있는 다양한 의존성 관리기법을 학습했다. 이번 장에서는 해당 기법들을 원칙이라는 관점에서 정리하고자 한다. 앞 장의 내용이 반복된다는 느낌을 받을 수 있겠지만, 이름을 가진 설계 원칙을 통해 기법들을 정리하는 것은 장황하게 설명된 개념과 매커니즘을 또렷하게 정리할 수 있게 도와줄 뿐만 아니라 설계를 논의할때 사용할 수 있는 공통의 어휘를 익힌다는 점에서도 가치가 있다. 1. 개방-폐쇄 원칙 로버트 마틴은 확장 가능하고 변화에 유연하게 대응할 수 있는 설계를 만들 수 있는 원칙 중 하나로 개방-폐쇄 원칙(Open-Closed Principle, OCP)을 고안했다. 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려있어야하고, 수..
사람의 기억은 단기 기억과 장기 기억으로 분류할 수 있다 단기 기억 : 보관돼 있는 지식에 직접 접근할 수 있지만 정보를 보관할 수 있는 속도와 공간적 측면이 모두 제약을 받는다 장기 기억 : 경험한 내용을 수개월에서 길게는 평생에 걸쳐 보관하는 장소 일반적으로 장기 기억안에 보관돼 있는 지식은 직접 접근하는 것이 불가능하고, 먼저 단기 기억 영역으로 옮긴 후에 처리해야 한다 실제로 문제를 해결하기 위해 사용하는 저장소는 단기 기억이다. 하지만 문제 해결에 필요한 요소가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격히 떨어지는 인지 과부하(cognitvie overload)현상이 발생한다. 인지 과부하를 방지하기 위해 단기 기억 안에 보관할 정보의 양을 조절한다 한번에 다뤄야 하는 정보와 수를..
정적 팩터리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을때 적절히 대응하기 어렵다는 점이다. 생성자 패턴 1. 점층적 생성자 패턴 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수 2개까지 받는 생성자,... 형태로 선택 매개변수를 전부 다 받는 생성자자까지 늘려가는 방식이다. 즉, 필수 인자를 받는 생성자를 정의한 후, 선택적 인자를 하나씩 추가해가며 정의하는 것이다. package org.example.item02; public class NutritionFacts { private final int servingSize; // 필수 private final int servings; // 필수 private final int calori..
Static Factory Method(정적 메소드) 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단 : public 생성자 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다 // boolean의 기본 타입의 값을 받아 Boolean 객체 참조로 변환 public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } ※ 정적 팩터리 메서드는 디자인 패턴에서의 팩터리 메서드(Factory Method)와다르다. 디자인 패턴 중에 이와 일치하는 패턴은 없다. 장점 1. 이름을 가질 수 있다. (동일한 시그니처의 생성자를 두개 가질 수 없다.) 생성자에 넘기는 매개변수..