본문 바로가기

Java29

[Java] 자바 제네릭(Generic)의 기본 개념과 사용 이유 ✅ Part 1: 자바 제네릭(Generic)의 기본 개념과 사용 이유📌 1. 제네릭이란?제네릭(Generic) 은 자바에서 데이터 타입을 클래스나 메서드 선언 시 고정하지 않고,사용 시점에 지정할 수 있도록 해주는 문법입니다.즉, “타입을 매개변수처럼 다룬다”는 뜻이에요.📦 2. 왜 제네릭을 쓰는가?✅ 제네릭 도입 전의 문제점 (Java 1.4 이전)List list = new ArrayList();list.add("hello");list.add(123); // 타입이 섞여도 컴파일러가 모르고 허용String s = (String) list.get(1); // ❌ 런타임 오류: ClassCastException✅ 제네릭 도입 이후 (Java 1.5부터)List list = new ArrayList(.. 2025. 5. 13.
[Java] Interface/Abstract Class 실무 활용 패턴 - Part 3: 인터페이스 기반 DI (Dependency Injection) ✅ Part 3: 인터페이스 기반 DI (Dependency Injection)📌 1. 개념 요약의존성 주입(DI) 은 객체가 직접 의존 대상을 생성하지 않고,외부에서 필요한 구현체(의존 객체)를 주입받는 설계 방식입니다.그리고 이때 의존 대상을 "인터페이스 타입"으로 선언하면 →유연성, 확장성, 테스트 용이성이 모두 크게 향상됩니다.🔧 2. 구조 및 핵심 개념[인터페이스] ← 역할 정의 (불변)[구현 클래스들] ← 실제 동작 정의 (변화 가능)[서비스 클래스] ← 인터페이스에만 의존즉, "구현체가 아닌 역할(인터페이스)에 의존" → 느슨한 결합✅ 3. 예제: 사용자 저장 시스템🔹 인터페이스public interface UserRepository { void save(User .. 2025. 5. 7.
[Java] Interface/Abstract Class 실무 활용 패턴 - Part 2: 전략 패턴 (Strategy Pattern) ✅ Part 2: 전략 패턴 (Strategy Pattern)📌 1. 개념 요약전략 패턴(Strategy Pattern) 은 행위(로직/알고리즘)를 객체화해서 외부에서 주입하고 교체할 수 있도록 만든 구조입니다.즉, 어떤 기능(전략)이 상황에 따라 달라져야 할 때,조건문(if/else) 대신전략 인터페이스 + 구현체를 만들어필요 시점에 교체해서 실행🔧 2. 구조 및 키포인트[인터페이스] : 전략 규칙 정의[구현 클래스들] : 전략별 로직 분리[컨텍스트 객체] : 전략을 주입받아 실행실행을 담당하는 컨텍스트 객체는 전략에 대해 알지 못함전략 인터페이스만 알고 있으므로 전략 교체가 자유로움✅ 3. 예제: 정렬 알고리즘 선택🔹 전략 인터페이스interface Sort.. 2025. 5. 7.
[Java] Interface/Abstract Class 실무 활용 패턴 - Part 1: 템플릿 메서드 패턴 (Template Method Pattern) ✅ Part 1: 템플릿 메서드 패턴 (Template Method Pattern)📌 1. 개념 요약템플릿 메서드 패턴은 전체 처리 흐름(템플릿)은 부모 클래스에서 고정하고,그 중 일부 세부 로직은 자식 클래스에서 구현하도록 만드는 패턴입니다.즉, **"변하지 않는 틀은 위에 두고, 변화되는 부분만 아래에서 다룬다"**는 구조입니다.🔧 2. 구조 및 키포인트[추상 클래스]+ 템플릿 메서드 정의 (final로 고정 가능)+ 공통 메서드 구현+ 추상 메서드 → 자식이 오버라이딩[자식 클래스]+ 추상 메서드를 오버라이딩 하여 변화되는 부분 구현✅ 3. 예제: 결제 처리 시스템🔹 추상 클래스: 결제 흐름 정의abstract class PaymentService { // 템플릿 메서드 (변경 금지) .. 2025. 5. 7.
[Java] 인터페이스와 추상 클래스 (Interface and Abstract Class) ✅ 자바에서 인터페이스와 추상 클래스는 왜 필요한가?─ 설계 유연성과 다형성을 위한 구조 설계 가이드🔷 1. 왜 인터페이스/추상 클래스가 필요한가?📌 다중 상속 불가한 자바의 특징class A {}class B {}class C extends A, B {} // ❌ 컴파일 에러자바는 클래스 다중 상속 금지 → 다중 상속의 모호성 문제 (Diamond Problem) 방지✅ 그래서 등장한 해결책개념설명인터페이스다중 상속의 대체 수단. 구현은 없고 규칙만 정의추상 클래스공통 동작의 기본 구현을 제공하고, 자식 클래스가 선택적으로 오버라이딩🔷 2. 인터페이스(Interface)✅ 정의모든 메서드는 암묵적으로 public abstract모든 필드는 암묵적으로 public static final구현체가 무조.. 2025. 5. 7.
[Java] 왜 `this()` 생성자 체이닝을 사용하는가? 🧩 왜 this() 생성자 체이닝을 사용하는가?✅ 한 줄 요약유연한 객체 생성 + 코드 중복 제거 + 유지보수 편의성이 세 가지를 위해 이런 방식들을 씁니다.🧩 왜 this() 생성자 체이닝을 사용하는가?1️⃣ 코드 중복 제거class Student { String name; int score; public Student() { this.name = "이름 없음"; this.score = 0; } public Student(String name) { this.name = name; this.score = 0; } public Student(String name, int score) { this.name.. 2025. 4. 8.