본문 바로가기

Design Pattern

(15)
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): 이는 주제의 상태 변경에 대해 알려지길 원하는 객체이다. 옵저버는 주제에 자신을 등록하고 변경이 발생하면 알림을 받고, 알림을 받으..
Adapter-Pattern # Adapter-Pattern에 대해서 정리하기0. 이 프로젝트에 대한 주요 설명은 아래와 같다.이 프로젝트는 어댑터 패턴을 사용하여 UserDaoImpl과 UserMapper의 인터페이스를 통일시키는 것을 목표로 하고 있다. 이를 통해 나머지 애플리케이션은 UserDaoImpl이나 UserMapper에 대해 알 필요 없이 사용자 정보를 가져올 수 있다. 이는 어댑터 패턴의 주요 목표인 인터페이스의 호환성을 달성하는 것이다.1. 이프로젝트에서 어떻게 구현 되었나?이 프로젝트에서의 어댑터 패턴은 UserDaoImpl 클래스와 UserMapper 인터페이스 사이에 적용되었다.UserDaoImpl 클래스는 UserDao 인터페이스를 구현하며, getUser 메소드를 통해 사용자 정보를 가져온다. public..
Proxy Pattern # Proxy Pattern 관련 내용 정리1. Proxy Pattern이란?프록시 패턴(Proxy Pattern)은 디자인 패턴 중 하나로, 어떤 객체에 대한 접근을 제어하거나, 그 객체에 대한 요청을 처리하기 위해 대리자 또는 대변인 역할을 하는 객체를 생성하는 패턴이다. 프록시 패턴은 실제 객체와 같은 인터페이스를 가지며, 클라이언트는 실제 객체 대신 프록시를 사용하여 작업을 수행한다.  프록시 패턴은 다음과 같은 경우에 사용된다:   원격 프록시(Remote Proxy): 원격 객체에 대한 로컬 인터페이스를 제공한다. 예를 들어, 원격 서버에 있는 객체에 대한 로컬 인터페이스를 제공할 수 있다.   가상 프록시(Virtual Proxy): 필요에 따라 복잡한 또는 시간이 많이 소요되는 작업을 수행..