Java24 Enum의 객체 지향적 활용 방법 Enum 이란?서로 관련된 상수들의 집합을 타입으로 정의한 것단순 static final 상수보다 타입 안정성이 높음 (컴파일 타임에 오타나 잘못된 값을 방지)작성 예시public enum ProductStatus{ FOR_SALE, // 판매 중 OUT_OF_STOCK, // 품절 DISCONTINUED, // 단종 DELETED; // 관리자에 의해 삭제됨} 객체 지향적 활용 방법1. 상태에 따른 판단을 스스로 한다.안티 패턴public enum ProductStatus{ FOR_SALE, // 판매 중 OUT_OF_STOCK, // 품절 DISCONTINUED, // 단종 DELETED; // 관리자에 의해 삭제됨}/*주문 재고 차감*/public voi.. 2026. 7. 21. SOLID 원칙 SOLID 원칙이란?시간이 지나도 유지보수와 확장이 쉬운, 이해하기 편하고 유연한 소프트웨어를 만들기 위한 다섯 가지 객체 지향 설계 원칙의 모음 Single Responsibility Principle(단일 책임 원칙)클래스는 단 하나의 책임만을 가져야 한다. ▼잘못된 코드더보기// 너무 많은 책임을 가진 클래스public class Employee { private String name; private double salary; // 책임 1: 직원 정보 관리 public void setName(String name) { this.name = name; } // 책임 2: 급여 계산 public double calculatePay().. 2026. 7. 14. 커머스 프로그램 만들면서 적용해본 객체 활용법 간단한 커머스 프로그램을 만들면서 최근 공부한 다양한 객체 활용법들을 적용해보았다. https://github.com/wjdals0508/commerceProject GitHub - wjdals0508/commerceProject: 내일배움캠프 커머스 과제내일배움캠프 커머스 과제 . Contribute to wjdals0508/commerceProject development by creating an account on GitHub.github.com 정적 팩토리 메서드 (싱글톤 패턴)public class CustomerManager { //// 싱글톤 //// private static CustomerManager instance; private CustomerManager() .. 2026. 6. 20. 정적 팩토리 메서드 생성자 대신 정적 팩토리 메서드를 고려하라! 정적 팩토리 메서드란?객체의 생성을 담당하는 클래스 메서드 정적 팩토리 메서드의 특징1. 생성 목적에 대한 이름 표현 가능public final class Money { private final long amount; private Money(long amount) { this.amount = amount; } public long amount() { return amount; } public static Money of(long amount) { return new Money(amount); } // 정적 팩토리 메서드 public static Money won(long amount) { retur.. 2026. 6. 15. 상속(Inheritance) VS 합성(Composition) 조심스럽게 상속을 쓰고 우선 합성을 고려하라. 게임 속 전사 캐릭터가 있다고 가정하자, 이 캐릭터는 무기로 검, 도끼, 메이스를 쓸 수 있고 플레이 도중 변경 할 수 있다.이를 코드로 구현하려면 어떻게 해야 할까? 상속으로 해볼까?public class Warrior implements Character ( /* 전사 공통 */)public class SwordWarrior extends Warrior { ... }public class AxWarrior extends Warrior { ... }public class MaceWarrior extends Warrior { ... } 문제 1. 정체성이 끊긴다. 자바는 객체의 클래스를 런타임에 바꿀 수 없다. 무기를 도끼로 바꾸려면 new AxWarr.. 2026. 6. 15. 방어적 복사 방어적 복사가 필요한 이유 객체 내에 List 같은 Collections 객체를 필드로 가지면 final로 선언해도 외부에서 .add로 조작이 가능하다. 이런 조작을 방어하기 위해 방어적 복사가 필요하다.public class Store { private final String name; private final List items; public Store(String name, List items) { this.name = name; this.items = items; // 외부 리스트를 그대로 받음 } public List getItems() { return items; // 내부 리스트를 그.. 2026. 6. 15. 이전 1 2 3 4 다음