전략 패턴(Strategy Pattern)이란?
·
개발지식/디자인패턴
전략 패턴을 알아보자 1. 전략 패턴이란?전략 패턴이란?전략 패턴은 알고리즘 군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 하는 디자인 패턴이다. 이를 통해 알고리즘을 사용하는 클라이언트 코드에 영향을 주지 않고 알고리즘을 독립적으로 변경할 수 있다. 전략 패턴의 구성 요소Strategy 인터페이스알고리즘을 정의하는 공통 인터페이스다.특정 작업을 수행하기 위한 메서드를 선언한다.Concrete StrategyStrategy 인터페이스를 구현하는 구체적인 알고리즘 클래스다.다양한 알고리즘이나 행동을 구현한다.ContextStrategy 객체를 가지고 있으며, 클라이언트로부터 요청을 받아 Strategy에 작업을 위임한다.전략을 설정하고 실행하는 역할을 한다.전략 패턴의 작동 방식클라이언트가 C..
커맨드 패턴(Command Pattern)이란?
·
개발지식/디자인패턴
Command 패턴 알아보기 1. Command 패턴이 왜 필요하고 어떤 장점을 제공할까?지금부터 레스토랑 주문 시스템을 예로 들어, Command 패턴이 왜 필요하고 어떤 장점을 제공하는지 알아보자.  Command 패턴을 사용하지 않은 경우먼저, Command 패턴을 사용하지 않고 간단한 주문 시스템을 구현해 보자.// OrderSystem 클래스: 주문 처리 담당public class OrderSystem { public void placeOrder(String item) { System.out.println(item + " 주문이 접수되었습니다."); } public void cancelOrder(String item) { System.out.println..
가볍게 알아보는 디자인 패턴 - 퍼사드 패턴(Facade Pattern)
·
개발지식/디자인패턴
퍼사드 패턴에 대해 가볍게 알아보자 1. Facade Pattern이란?1-1. 퍼사드 패턴이란퍼사드(Facade) 패턴은 복잡한 시스템을 쉽게 사용할 수 있도록 도와주는 디자인 패턴이다. 예를 들어, 컴퓨터를 켜면서 하는 일들을 생각해 보자. 전원 버튼을 누르는 것만으로 운영체제가 시작되고, 여러 프로그램이 실행되고, 네트워크에 연결되는 일들이 일어난다. 이 모든 복잡한 과정들을 단 한 번의 버튼 클릭으로 간단하게 처리할 수 있는 것처럼, 퍼사드 패턴은 프로그래밍에서도 비슷한 역할을 한다. 1-2. 퍼사드 패턴의 역할퍼사드 패턴은 복잡한 서브시스템의 기능들을 간단한 인터페이스로 제공함으로써 클라이언트 측 개발자가 내부 로직의 복잡성을 몰라도 되게 한다. 이 패턴은 여러 복잡한 클래스들과의 직접적인 상호..
가볍게 알아보는 디자인 패턴 - 팩토리 메서드 패턴(Factory Method Pattern)
·
개발지식/디자인패턴
팩토리 메서드 패턴에 대해서 알아보자   1. 팩토리 메서드 패턴이란?팩토리 메서드 패턴은 객체 생성을 추상화하고 캡슐화하는 디자인 패턴이다. 스프링에서 이 패턴은 BeanFactory와 ApplicationContext를 통해 구현된다. 객체를 직접 생성하는 대신, 팩토리를 통해 객체를 요청하면, 이 팩토리가 객체 생성의 복잡성을 숨기고 필요한 객체를 제공한다. 1-1. 팩토리 메서드 패턴의 기본 구조  1. 정의팩토리 메서드 패턴은 객체의 생성 과정을 서브 클래스에 위임하는 디자인 패턴이다. 이를 통해 클라이언트 코드는 구체적인 클래스의 인스턴스화 과정을 알 필요 없이, 객체를 생성할 수 있다.  2. 구현 방식이 패턴은 팩토리 메서드를 정의하여, 이 메서드가 객체를 생성하고 반환하는 역할을 한다. ..
가볍게 알아보는 디자인 패턴 - 싱글톤 패턴(Singleton Pattern)
·
개발지식/디자인패턴
스프링에 적용된 싱글톤 패턴에 대해서 간단히 알아보자 1. 싱글톤 패턴의 구조 이해하기 1-1. 스프링 컨테이너 이해하기스프링 컨테이너는 ApplicationContext를 통해 정의된다. 이 컨테이너는 IoC(Inversion of Control) 또는 DI(Dependency Injection) 컨테이너로도 알려져 있다. 주요 역할은 애플리케이션 내의 빈(Bean)들을 인스턴스화, 구성, 관리하는 것이다. 이 과정을 통해 개발자는 객체의 생성과 생명주기에 대해 걱정할 필요 없이 비즈니스 로직에 집중할 수 있다.1-2. IoC 컨테이너 (스프링 컨테이너)의 중요성IoC 컨테이너는 객체의 생성과 의존성 주입을 담당한다. 이는 객체 간의 의존성을 느슨하게 만들어, 코드의 재사용성과 테스트 용이성을 향상시킨..