본문 바로가기

Design Pattern

(17)
AI Agent 기반 디자인 패턴 스프링 부트 기반 AI 에이전트 디자인 패턴스프링 부트에서 AI 에이전트를 구현할 때 활용할 수 있는 디자인 패턴들은 다음과 같습니다:1. 전략 패턴 (Strategy Pattern)다양한 AI 알고리즘이나 모델을 교체 가능하게 구현인터페이스를 통해 AI 모델 구현체를 런타임에 교체 가능@Service 구현체를 여러 개 만들고 @Qualifier로 선택public interface AIModelStrategy { String processInput(String input);}@Service@Qualifier("gpt")public class GPTModelStrategy implements AIModelStrategy { @Override public String processInput(..
디자인 패턴 React의 대표적인 디자인 패턴은 다음과 같다.Container-Presenter 패턴: 컴포넌트를 두 가지로 나누어, 하나는 데이터 로직을 처리하는 Container 컴포넌트, 다른 하나는 UI를 렌더링하는 Presenter 컴포넌트로 분리한다.Higher-Order Components (HOC): 컴포넌트를 인수로 받아서 새로운 컴포넌트를 반환하는 함수이다. 주로 코드 재사용성을 높이기 위해 사용된다.Render Props: 컴포넌트의 자식으로 함수를 전달하여, 그 함수를 통해 컴포넌트의 렌더링 로직을 정의하는 패턴이다.Custom Hooks: React의 Hook 기능을 사용하여 재사용 가능한 로직을 추출하는 패턴이다.Compound Components: 여러 개의 작은 컴포넌트를 조합하여 하나의..
MVCC (MultiVersion Concurrency Control) Pattern 1. MVCC 패턴다중 버전 동시성 제어 (MVCC) 패턴은 데이터베이스에서 일반적으로 사용되는 동시성 제어 방법으로, 같은 데이터에 대한 트랜잭션 간의 충돌을 피하기 위해 사용된다. 이 방법은 각 트랜잭션이 수정하는 각각의 데이터 항목에 대해 별도의 "버전"을 생성함으로써 작동한다. 이를 통해 각 트랜잭션은 자신만의 데이터 스냅샷으로 작업할 수 있으며, 다른 동시 트랜잭션에서 수행된 변경 사항에 영향을 받지 않는다. 이 프로젝트의 맥락에서, MVCC 패턴은 `ProductEntity`의 버전 필드를 사용하여 애플리케이션 수준에서 구현된다. 제품이 업데이트될 때, `ProductMapper`의 `updateIfVersionMatches` 메소드는 데이터베이스의 제품 버전이 업데이트하려는 `ProductE..
RaceContion을 회피하기 위한 디자인 패턴 종류 # RaceCondition을 회피하지 위한 디자인 패턴레이스 컨디션을 피하는 데 도움이 되는 디자인 패턴은 일반적으로 동기화 또는 상호 배제를 포함한다.1. Monitor Pattern: 이 패턴은 동기화 코드와 함께 공유 리소스를 캡슐화한다. 한 번에 하나의 스레드만 모니터의 어떤 메서드를 실행할 수 있어 레이스 컨디션을 방지한다. GitHub - Nanninggu/MornitorPattern: About MornitorPatternAbout MornitorPattern. Contribute to Nanninggu/MornitorPattern development by creating an account on GitHub.github.com2. Singleton Pattern: 이 패턴은 클래스가 하..
Chain-of-Responsibility-Pattern # Chain-of-Responsibility-Pattern 내용 정리1. 작성예정2. 작성예정3. 예제 코드는 아래의 git hub에 업로드 되어 있다.https://github.com/Nanninggu/Chain-of-Responsibility-Pattern.git GitHub - Nanninggu/Chain-of-Responsibility-Pattern: About Chain-of-Responsibility-PatternAbout Chain-of-Responsibility-Pattern. Contribute to Nanninggu/Chain-of-Responsibility-Pattern development by creating an account on GitHub.github.com - 끝 -
Template-Method-Pattern # Template-Method-Pattern (템플릿 메소드 패턴) 정리1. 흐름 정리이 프로젝트의 핵심 로직은 템플릿 메소드 패턴을 사용하여 공통적인 작업 흐름을 정의하고, 그 중 일부 단계를 서브클래스에서 구현하도록 하는 것이다.아래의 업로드된 코드에서 보면 아래와 같다.AbstractBaseMapper.java에서 템플릿 메소드인 selectOne(String id)를 정의하고 있다.이 메소드는 애플리케이션의 핵심 작업 흐름을 정의한다.이 메소드는 executeSelectOne(String id)와 postSelect(List result) 메소드를 순서대로 호출한다.executeSelectOne(String id) 메소드는 AbstractBaseMapper에서는 빈 메소드로 정의되어 있습니다.그..
Bridge-Pattern # Bridge-Pattern에 대해 정리.1. 아래의 예제 코드로업로드 된 브릿지 패턴의 구조는 아래와 같다.브릿지 패턴은 큰 클래스 또는 밀접하게 관련된 클래스들의 로직을 별도의 계층으로 분리하는 구조적 디자인 패턴이다.이 계층은 추상화와 구현으로 나뉘며, 이들은 서로 독립적으로 개발될 수 있다. 아래에 제공된 코드에서는 User, UserMapper, UserService, UserServiceImpl, 그리고 UserController 클래스들이 브릿지 패턴을 구현하고 있다.User 클래스는 추상화를 나타낸다. 이 클래스는 사용자의 정보를 나타내며, 데이터베이스와의 상호작용에 대해서는 알 필요가 없다.UserMapper 인터페이스는 구현을 나타낸다. 이 인터페이스는 MyBatis 어노테이션을 사용..
Observer-Pattern # Observer-Pattern에 대해서 정리1. 옵저버 패턴의 개념Observer 패턴의 핵심 로직은 객체 간의 일대다 의존성 개념을 중심으로 회전한다. 이는 한 객체의 상태가 변경되면 그에 의존하는 모든 객체들이 자동으로 알림을 받고 업데이트되는 것을 의미한다. 이 패턴은 객체 간의 느슨한 결합을 달성하기 위해 사용되며,  다음은 핵심 로직에 대한 간략한 설명이다:   주제(Subject): 이는 상태를 보유하는 객체이며, 옵저버가 자신을 등록하고 등록 해제할 수 있게 한다. 주제에서 변경이 발생하면 모든 등록된 옵저버에게 알림을 보낸다.   옵저버(Observer): 이는 주제의 상태 변경에 대해 알려지길 원하는 객체이다. 옵저버는 주제에 자신을 등록하고 변경이 발생하면 알림을 받고, 알림을 받으..