디자인 패턴8 [Design Pattern] 빌더 패턴 객체는 다음과 같은 방법으로 생성할 수 있다. 1. 생성자(Constructor)public class User { private String name; private String email; private String address; private Integer age; public User() { } public User(String name) { this.name = name; } public User(String name, String email, String address, Integer age) { this.name = name; this.email = email; this.address = ad.. 2025. 6. 1. [Design Pattern] 싱글톤 패턴 싱글톤 패턴이란?싱글톤(Singleton) 패턴은 객체를 단 하나만 생성하고, 어디서든 그 객체를 공유해서 쓸 수 있도록 해주는 디자인 패턴이다. 쉽게 말해, 매번 새로 객체를 만들지 않고 이미 만들어진 객체를 재사용하는 방식이라고 생각하면 된다. 이 패턴은 특정 클래스의 인스턴스가 반드시 하나만 존재해야 하는 상황에서 사용된다.애플리케이션을 개발하다 보면, 어떤 객체는 여러 개가 필요 없고 딱 하나만 있으면 되는 경우가 있는데 예로 다음과 같은 상황이 있다.로거 : 로그를 찍기 위해 매번 새로운 로거를 만들 필요 없이, 하나의 로거를 계속 사용해도 충분하다.환경 설정 : 시스템 전반에서 사용하는 설정 정보는 하나만 존재해도 된다.데이터베이스 연결 : 데이터베이스 연결은 무거운 작업이다. 이미 만들어진 .. 2025. 5. 30. [Design Pattern] 정적 팩토리 메서드 패턴 정적 팩토리 메서드(Static Factory Method) 패턴은 객체 생성을 위한 디자인 패턴으로, 생성자 대신 정적 메서드를 통해 객체를 생성하는 패턴을 의미한다.public class Product { private String name; private int price; // private 생성자 - 외부에서 직접 생성 불가 private Product(String name, int price) { this.name = name; this.price = price; } // 정적 팩토리 메서드 public static Product createProduct(String name, int price) { re.. 2025. 4. 14. [Design Pattern] 데코레이터 패턴 데코레이터 패턴이란 런타임 시점에 객체에 동적으로 새로운 기능을 추가할 수 있게 해주는 디자인 패턴으로,서브클래스를 만들지 않고 객체의 결합을 통해 기능을 확장할 수 있다.데코레이터 패턴 구조 Component기본 기능을 정의하는 인터페이스데코레이터와 실제 객체(ConcreteComponent)가 구현해야 하는 공통 인터페이스 역할을 한다.public interface Component { String operation();} ConcreteComponent기본 기능을 제공하는 실제 객체데코레이터가 해당 객체를 감싸서 추가 기능을 제공public class ConcreteComponent implements Component { @Override public String operation() { Sys.. 2024. 12. 26. [Design Pattern] 프록시 패턴 프록시란 대리자라는 의미로 클라이언트가 원본 객체를 이용하는 것이 아닌 대리자를 거쳐서 원본 객체에 접근하는 디자인 패턴이다.이렇게 중계 역할을 하는 프록시 객체가 되려면, 클라이언트는 원본 객체에게 요청을 한 것인지, 프록시에게 요청을 한 것인지 몰라야 한다.따라서 프록시는 원본 객체와 같은 인터페이스를 사용해서 구현하며, 이로 인해 대상 객체를 프록시로 변경해도 클라이언트 코드를 변경하지 않을 수 있다.프록시 패턴 구조 Subject (공통 인터페이스)실제 객체와 프록시 객체가 공통으로 구현해야 하는 인터페이스클라이언트는 해당 인터페이스를 통해 실제 객체와 프록시 객체를 동일하게 사용할 수 있다. public interface Subject { String operation();} RealSu.. 2024. 12. 26. [Design Pattern] 템플릿 콜백 패턴 템플릿 콜백 패턴이란 템플릿과 콜백을 활용한 패턴으로 스프링 프레임워크에서 주로 사용하는 특별한 전략 패턴을 의미한다. (GOF 패턴이 아님) 템플릿 콜백 패턴은 주로 함수를 인자로 전달하여 변해야 할 부분을 외부로 위임하는 방식으로 구현한다.즉 런타임 시점에 익명 클래스 형태의 전략 알고리즘을 동적으로 주입한다.스프링의 자주 볼 수 있는 XxxTemplate 객체는 해당 패턴을 사용하여 구현하였다. 참고로 콜백이란 다른 함수의 인수로 전달되는 실행 가능한 코드로, 코드가 호출( call )은 되는데 코드를 넘겨준 곳의 뒤( back )에서 실행된다는 의미다.자바의 경우 콜백을 전달하려면 객체가 필요하다.따라서 자바8 이전에는 하나의 메소드를 가진 인터페이스(함수형 인터페이스)를 구현하고, 익명 내부 클.. 2024. 12. 25. [Design Pattern] 전략 패턴 전략 패턴이란 알고리즘을 캡슐화하여 런타임 중 객체 동작을 동적으로 교체할 수 있도록 설계하는 디자인 패턴을 의미한다.객체의 행위를 정의하는 알고리즘을 별도의 클래스로 분리, 이를 사용하는 객체(Context)가 특정 행동(Strategy)을 주입받아서 실행한다.전략 패턴의 주요 구성 요소 1. Strategy(전략 인터페이스)알고리즘(행동)을 정의하는 공통 인터페이스.다양한 구체 전략(Concrete Strategies)들이 해당 인터페이스를 구현하여 각기 다른 알고리즘을 제공.public interface Strategy { void execute();} 2. ConcreteStrategy(구체적인 전략)Strategy 인터페이스를 구현하며, 알고리즘(행동)을 정의.class StrategyA.. 2024. 12. 25. [Design Pattern] 템플릿 메서드 패턴 템플릿 메서드 패턴이란 여러 클래스에서 공통으로 사용하는 메서드(변하지 않는 기능)를 템플릿이라는 상위 클래스에 정의하고 세부 동작을 하위 클래스에서 구현하도록 하는 패턴이다.Abstract Class (추상 클래스)알고리즘의 구조(템플릿 메서드)를 정의공통적으로 처리하는 일부 메서드는 구현하며, 나머지는 추상 메서드로 선언되어 하위 클래스에서 구현Concrete Class (구체 클래스)상위 클래스에서 정의된 추상 메서드를 구현구현한 메서드는 상위 클래스에서 제공하는 템플릿 메서드를 통해서 순서대로 호출훅(Hook)템플릿 메서드 패턴에서 선택적으로 재정의할 수 있는 기본 구현을 제공하는 메서드로 추상 메서드가 아닌 일반 메서드로 구현반환 타입을 boolean으로 구현하여 부모의 템플릿 메서드의 순서를 .. 2024. 12. 25. 이전 1 다음