본문 바로가기

Effective Java6

불필요한 객체 생성을 피하라 이펙티브 자바의 해당 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.
private 생성자나 열거타입으로 싱글턴임을 보증하라 Effective 자바에서 해당 아이템은 싱글턴 디자인 패턴을 구현하는 방법에 관한 것 입니다. 아래에서 싱글턴 패턴을 구현하는 방법을 알아보겠습니다. public static final 필드 방식의 싱글턴 이 방법은 싱글턴 인스턴스를 public static final 필드로 직접 제공합니다. 하지만 이 방법은 대체로 사용하지 않는게 좋습니다. 장점 클래스가 싱글턴임이 API에 명백히 드러남 public static final 필드이니 절대로 다른 객체를 참조할 수 없음 구현이 간함(간결함) 단점 유연성이 떨어짐 싱글턴 인스턴스가 인터페이스를 구현해야 하거나, 인스턴스를 런타임으로 바꿔야 하는 경우에 적합하지 않음 public class Singleton { public static final Sing.. 2024. 1. 3.