목록캡슐화 (3)
개발자는 기록이 답이다

UtilityClass는 lombok v1.16.2에서 실험적인 기능으로 도입되었다. @UtilityClass를 사용하면, 컴파일 시점에 생성자 private 으로 만들어 주고, 모든 메서드를 static으로 만들어 준다. package com.devkuma.tutorial.lombok; import lombok.experimental.UtilityClass; @UtilityClass public class UtilityClassTutorial { public int plus(int a, int b) { return a + b; } } 위 코드는 @UtilityClass로 인해 아래와 같이 변경된다. package com.devkuma.tutorial.lombok; public final class Ut..

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

객체지향 설계의 핵심은 역할,책임,협력이다. 협력은 애플리케이션의 기능을 구현하기 위해 메시지를 주고받는 객체들 사이의 상호작용이고, 책임은 객체가 다른 객체와 협력하기 위해 수행하는 행동이고, 역할은 대체 가능한 책임의 집합이다. 책임 주도 설계라는 이름에서 알 수 있는 것처럼 가장 중요한 것은 '책임'이다. 객체들이 수행할 책임이 적절하게 할당되지 못한 상황에서는 원활한 협력도 기대할 수 없을 것이다. 역할도 책임의 집합이기 때문에 책임이 적절하지 못하면 역할 역시 협력과 조화를 이루지 못한다. 결국 책임이 객체 지향 애플리케이션의 전체 품질을 결정한다. 🚩 객체지향 설계란? 객체에게 올바른 책임을 할당하며, 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다. 책임을 할당하는 작업은 응집도와..