본문 바로가기

이펙티브 자바7

자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 - 팩토리 메서드 패턴 팩토리 메서드 패턴은 디자인 패턴중의 하나로, 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다 입니다. 이 방식은 디자인을 좀 더 사용자 정의에 가깝게 하고 약간의 복잡성을 추가하면서도, 객체 지향의 캡슐화 및 우연성 원칙을 지원합니다. 팩토리 메서드 패턴의 핵심 구성 요소 Product : 생성될 객체들의 공통 인터페이스를 정의합니다. ConcreteProduct : Product 인터페이스를 구현하는 실제 클래스 입니다. Creator : 팩토리 메서드를 선언하고 Product 객체를 반환하는 메서드를 정의하는 클래스 입니다. ConcreteCreator : Creator 클래스를 상속 받고 팩토리 메서드를 구현하여 구체적인 Product를 생성하는 클래스 입니다. 팩토리 메서드 패턴의 장점.. 2024. 4. 17.
불필요한 객체 생성을 피하라 이펙티브 자바의 해당 item은 성능 최적화와 메모리 관리를 강조합니다. 이 원칙은 불필요한 객체 생성을 피함으로써 시스템의 메모리 사용과 성능을 개선하는데 중점을 둡니다. 불필요한 객체 생성의 문제 : 매번 필요할 때마다 새로운 객체를 생성하는 것은 메모리 사용을 증가시키고 가비지 컬렉션의 부담을 가중시킬 수 있습니다. 재사용을 통한 최적화 : 변경 불가능한 객체(immutable objects)나 변경 가능성이 없는 객체는 재사용하는 것이 좋습니다. 예를 들어 String 대신 StringBuilder를 사용할 수 있습니다. 팩토리 메소드 활용 : 객체 생성이 필요한 리소스가 큰 경우 "new" 대신 팩토리 메서드를 사용하여 기존 객체를 재사용할 수 있습니다. 경량 객체 사용 : 작은 메모리를 사용하.. 2024. 1. 11.
자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 해당 원칙은 의존성 주입(Dependency Injection, DI) 의 중요성에 대해서 강조하고 있습니다. 의존 객체 주입은 클래스가 자신의 의존성을 직접 생성하지 않고 외부에서 제공 받는 방식입니다. 유연성과 재사용성 : 의존 객체 주입을 사용하면, 클래스가 특정 구현에 강하게 결합되는 것을 방지할 수 있습니다. 예를들어, 데이터베이스 연결이나 네트워크 리소스와 같은 자원에 대한 구체적인 구현 대신 인터페이스를 주입 받으면 클라이언트 코드에 영향 없이 다른 구현체로 쉽게 교체할 수 있습니다. 테스트 용이성 : 의존 객체 주입을 사용하면 단위 테스트 시에 실제 구현 대신 모의 객체(mock)이나 스텁을 주입할 수 있어 테스트가 용이해집니다. 유연성과 재사용성 ClientService 클래스는 Emai.. 2024. 1. 10.
인스턴스화를 막으려거든 private 생성자를 사용하라 해당 내용의 핵심은 인스턴스를 생성할 필요가 없는 클래스를 설계할 때, 개발자가 실수로 인스턴스를 생성하는 것을 방지합니다. 예를 들어, 유틸리티성 클래스를 만들 때 이 클래스는 정적 필드만 포함하고 인스턴스화할 필요가 없습니다. "Java Math " 클래스가 이러한 유형입니다. 자바에서는 생성자를 명시적으로 정의하지 않으면 컴파일러가 자동으로 기본 생성자를 제공합니다. 이로 인해 개발자가 실수로 이러한 유틸 클래스의 인스턴스를 생성할 수 있습니다. 이를 방지 하기 위해 private 생성자를 사용합니다. private 생성자는 외부에서의 접근을 차단하여 클래스의 인스턴스화를 방지 합니다. 또한 이 생성자 내부에는 인스턴스화를 시도할 경우 예외를 던지는 코드를 작성할 수도 있습니다. public fin.. 2024. 1. 3.