팩토리 메서드 패턴이란 이 방법은 인스턴스 생성을 위한 인터페이스를 정의하고, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 합니다. 이로써 객체 생성과 클래스의 구현이 밀접하게 결합되는 것을 방지합니다. 팩토리 메서드 패턴의 구성1. Creator객체의 생성 과정을 추상화한 클래스 또는 인터페이스.팩토리 메서드를 선언, 구체적인 객체 생성은 서브클래스(ConcreteCreator)가 담당한다. 2. ConcreteCreator팩토리 메서드를 오버라이드 하여서, 구체적인 제품을 구현한다. 3. Product생성될 객체들의 공통 인터페이스.ConcreteProduct 클래스들이 구현해야 하는 메서드를 정의. 4. ConcreteProductProduct 인터페이스를 구현하는 실제 객..
빌더 패턴이란빌더 패턴은 복잡한 객체의 생성 과정과 표현 방법을 분리하여, 동일한 생성 과정에서 서로 다른 표현 결과를 얻을 수 있도록 하는 생성 디자인 패턴입니다. 빌더 패턴의 구성GOF 가 설명하는 빌더 패턴은 주로 다음 네 가지 구성 요소로 이루어져 있습니다Builder: 객체의 생성 과정을 추상화한 인터페이스.ConcreteBuilder: Builder 인터페이스의 구현체로, 객체의 실제 생성을 담당.Director: Builder를 사용해 객체를 생성하는 클래스.Product: 최종적으로 생성되는 객체. 빌더패턴 다이어그램 예제: 커피주문 시스템// Product 클래스public class Coffee { private final String type; private final..
오늘은 자바의 강력한 기능 중 하나인 '레코드(Records)'에 대해 기록을 해보려고 합니다. 자바 16부터 정식으로 도입된 레코드는 데이터 전송 객체(DTO)의 생성을 더욱 간결하고 명확하게 만들어 줍니다. 저는 보통 lombok을 사용해서 어노테이션을 덕지덕지 붙여놨었는데 DTO를 Record로 생성하면 간단하게 해결되더라구요. 정리를 해보자면 자바 레코드란? 자바 레코드는 데이터를 운반하는 데에 최적화된 불변의 데이터 클래스입니다. 기존의 클래스보다 훨씬 간결한 코드로 필드와 데이터를 정의할 수 있어, 개발자의 편의성을 크게 향상시킵니다. 예제 한번봅시다. public record Person(String name, int age) {} 끝. 단 몇 줄의 코드로 Person 클래스를 완성할 수 있..
AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 개발자가 횡단 관심사를 모듈화하고 주요 비즈니스 로직에서 분리할 수 있게 하는 강력한 프로그래밍 패러다임입니다. 여기서 AOP의 기본 개념, 스프링 프레임워크에서의 구현 방법, 그리고 이점을 잘 보여주는 실용적인 예제를 통해 AOP를 살펴볼 것입니다. AOP란 무엇인가? AOP는 객체 지향 프로그래밍(OOP)을 보완하여 로깅, 보안, 트랜잭션 관리 등과 같은 횡단 관심사를 주 비즈니스 로직으로부터 분리할 수 있게 해줍니다. AOP는 이러한 관심사를 별도의 모듈인 "Aspect"로 캡슐화하여 코드의 장황함을 줄이고 유지보수성을 높이는 데 도움을 줍니다. AOP의 핵심 개념 Aspect(관점): 횡단 관심사를 캡슐화한 모듈 ..