반응형

코틀린 8

Stractegy Pattern - 전략 패턴

Stractegy Pattern - 전략 패턴전략 패턴이란?전략 패턴(Strategy Pattern)은 행위 디자인 패턴(Behavioral Design Pattern) 중 하나로, 알고리즘 군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만드는 패턴입니다. 이를 통해 클라이언트는 알고리즘을 독립적으로 변경할 수 있으며, 코드의 유연성과 확장성을 높일 수 있습니다. 여기서 '전략'이란 일종의 알고리즘이 될 수 도 있으며, 기능이나 동작이 될 수도 있는 특정한 목표를 수행하기 위한 행동 계획을 말합니다.즉, 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우에 적합한 패턴입니다.전략 패턴의 개념Strat..

디자인패턴 2024.12.28

Factory Method Pattern - 팩토리 메서드 패턴

Factory Method Pattern - 팩토리 메서드 패턴Factory Method란?팩토리 메서드 패턴(Factory Method Pattern)은 객체 생성의 책임을 서브클래스에 위임하여, 클라이언트 코드가 구체적인 클래스에 의존하지 않고 객체를 생성할 수 있도록 하는 생성 패턴(Creational Pattern) 중 하나입니다. 클라이언트에서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 제품 객체들을 도맡아 생성하는 공장 클래스를 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임 지게합니다. 또한 객체 생성에 필요한 과정을 템플릿 처럼 미리 구성해놓고, 객체 생성에 관한 전처리나 후처리를 통해 생성 과정을 다양하게 처리하여 객체를 유연하..

디자인패턴 2024.12.28

Spring - Servlet(서블릿)이란?

ServletServlet이란?Servlet은 자바 클래스로, 웹 서버(예: Tomcat)에서 동작하며 HTTP요청을 처리하고 응답을 생성하는 역할을 합니다.클라이언트(웹 브라우저 등)와 서버 사이의 요청 및 응답 흐름을 관리합니다. 서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 시능을 수행한 후 웹 브라우저에 결과를 전송합니다. 쉽게 예를들면 로그인 시도를 할 때, 서버가 클라이언트에서 입력되는 요청(Request)을 확인하고 결과를 응답(Response)하는데이러한 역할을 서블릿이 수행합니다. Servlet의 역할요청 처리클라이언트의 HTTP 요청을 수신요청 데이터를 분석(예: 폼 데이터, 쿼리 파라미터 등)비즈니스 로직 수행데이터베이스 접근, 파일 처리, 계산 등을 수행응답 생성HT..

Kotlin 2024.12.24

AOP (Aspect-Oriented Programming) - 관점 지향 프로그래밍

AOP (Aspect-Oriented Programming) - 관점 지향 프로그래밍AOP란?AOP는 소프트웨어 설계 원칙 중 하나로, 애플리케이션 전반에 걸쳐 반복적으로 나타나는 공통 관심사(Cross-Cutting Concerns)를 핵심 비즈니스 로직과 분리하여 관리하는 프로그래밍 기법입니다. 스프링 프레임워크는 AOP를 활용해 로깅, 트랜잭션 관리, 보안과 같은 공통 작업을 모듈화하여 코드의 중복을 줄이고 유지보수를 용이하게 합니다.AOP의 필요성비즈니스 로직에 다음과 같은 공통 작업이 섞여 있다면 코드가 복잡해지고 중복이 늘어납니다.메시드 실행 전/후 로깅데이터 검증보안 인증/인가트랜잭션 처리AOP 적용 전 class UserService { fun createUser(user: Us..

Kotlin 2024.12.23

DI (Dependency Injection) - 의존성 주입

DI (Dependency Injection) - 의존성 주입DI란?객체가 필요로 하는 의존성을 스프링 컨테이너가 주입하는 설계 패턴입니다.DI는 IoC의 구체적인 구현 방식 중 하나로, 객체 간의 의존성을 스프링 컨테이너가 자동으로 설정해줍니다.DI의 핵심객체 간의 의존성을 스프링 컨테이너(ApplicationContext)가 관리.객체를 필요로 하는 클래스는 의존성을 직접 생성하지 않고 외부에서 주입받음주입 방법: 생성자, 필드, Setter(메서드)를 통해 이루어짐DI의 장점결합도 감소클래스 간의 강한 의존성을 없애고 유연성을 높임객체가 내부의 의존성을 생성하지 않으므로, 다른 객체로 쉽게 교체 가능테스트 용이성DI를 통해 실제 객체 대신 Mock 객체를 주입하여 유닛 테스트를 쉽게 작성 가능재사용..

Kotlin 2024.12.20

스프링 IoC(Inversion of Contorl) - 제어의 역전

IoC(Inversion of Contorl) - 제어의 역전IoC란?객체의 생성 및 제어권을 개발자가 아닌 스프링 컨테이너가 관리하는 프로그래밍 원칙입니다.일반적으로 객체 생성과 의존성 관리는 개발자가 직접 수행하지만, IoC에서는 스프링이 이를 대신 관리합니다.IoC의 핵심전통적인 개발 방식에는 객체가 다른 객체를 직접 생성하고 호출합니다.이는 객체 간 강한 결합도를 만들어 유지보수와 확장에 어려움을 초래합니다.IoC는 이 제어권을 스프링 같은 프레임워크로 넘김으로써 객체 간 결합도를 낮추고 유연성을 제공합니다.전통적인 방식(제어권이 개발자에게 있음) class MyService { private val repository = MyRepository() // 직접 객체 생성 fun..

Kotlin 2024.12.20

Abstract Factory Pattern(추상 팩토리)

Abstract Factory Pattern소프트웨어 디자인 패턴중 하나로, 객체 생성을 위한 디자인 패턴입니다.관련된 객체들의 팩토리를 묶어 추상화하는 역할을 합니다.팩토리 메서드 패턴의 확장된 형태이며, 상호 관련되거나 의존적인 객체군(제품군)을 생성할 때 유용합니다. 추상 팩토리는 인터페이스를 제공하고, 이 인터페이스를 구현하는 구체적인 팩토리가 제품군을 생성합니다.클라이언트는 구체적인 팩토리 클래스를 알 필요 없이 인터페이스를 통해 객체를 생성합니다.  팩토리 메서드 패턴과 추상 팩토리 패턴의 차이점과 확장된 점팩토리 메서드 패턴객체를 생성할 때 단일 제품에 대해 팩토리 메서드를 제공합니다.하나의 팩토리 메서드가 특정 제품의 객체를 생성합니다.추상 팩토리 패턴여러 제품군에 대한 객체를 생성할 수 ..

디자인패턴 2024.12.17

Builder Pattern(빌더 패턴)

Builder Pattern(빌더 패턴)Builder Pattern은 소프트웨어 디자인 패턴 중 하나로 객체 생성의 복잡성을 줄이고, 단계적으로 객체를 구성할 수 있도록 도와주는 생성 디자인 패턴입니다. 주로 생성자가 복잡하거나 다양한 설정이 필요한 객체를 생성할 때 사용합니다. 예를 들어 자동차를 만든다고 가정할때, 자동차를 주문할때 여러가지 옵션을 넣을수가 있습니다. 썬루프, 시트, 타이어 크기, 자동차 색상 등등을 구매자가 원하는대로 결졍됩니다. 어느 사람은 기본 옵션을 그대로 사용할 수 도 있고, 어떤 사람은 썬루푸, 시트만 변경할 수 도 있고, 어떤 사람은 모두 변경할 수 도 있습니다. 이처럼 선택적 옵션을 보다 유연하게 받아 다양한 타입의 인스턴스를 생성할 수 있어, 클래스의 선택적 매개변수가..

디자인패턴 2024.12.16
반응형