Computer Science/디자인패턴

Service - 비즈니스 로직에 대한 책임을 가진다 서비스는 일반적으로 비즈니스 로직을 포함하는 레이어입니다. 데이터베이스에서 데이터를 가져오거나 변형하거나 다른 서비스를 호출하거나 다양한 애플리케이션의 비즈니스 로직을 구현하는 역할을 합니다. 즉, 서비스 레이어는 비즈니스 로직을 캡슐화하여 레포지토리와 컨트롤러 사이에 위치합니다. 이 레이어는 비즈니스 규칙과 워크플로를 수행하고, 데이터를 가져와 가공하는 일을 담당합니다. 예제 앞서 Repository에서 정의한 UserRepository를 사용하여 User에 대한 비즈니스 로직을 처리하는 UserService를 만들어봅시다. @Service public class UserService { private final UserRepository userR..
Repository - 데이터 접근에 대한 책임을 갖는다 레포지토리는 데이터에 접근하는 방법을 캡슐화하는데 사용되는 설계 패턴입니다. 레포지토리 패턴은 일관된 방식으로 데이터에 접근하도록 해주며, 도메인 로직에서 데이터 저장소의 세부 정보를 분리하여 응용 프로그램의 테스트 및 유지 관리를 용이하게 해줍니다. 예제 예를 들어, 사용자 데이터를 저장하는 경우를 생각해보겠습니다. 우리는 User라는 엔티티를 가지고 있고, 이를 데이터베이스에 저장하려고 합니다. 이를 위해 UserRepository 인터페이스를 정의하고 필요한 메소드를 선언할 수 있습니다. @Repository public interface UserRepository extends JpaRepository { User findByUsername..
생성자 Vs 빌더 패턴 1. 생성자(Constructor) 사용하기 CartRespFindAllDTO responseDTO = new CartRespFindAllDTO(productDTOList, 104500); 생성자를 사용하면 객체를 만들기 위해 필요한 파라미터를 모두 제공해야 합니다. 생성자를 통한 객체 생성은 간단하고 직관적입니다. 위 예시에서는 productDTOList와 104500이라는 두 개의 파라미터를 이용해 CartRespFindAllDTO 인스턴스를 생성합니다. 단점은 생성자에 전달된 파라미터의 순서나 의미를 즉시 이해하기 어려울 수 있습니다. 또한, 파라미터의 수가 많아지면 관리하기 어려워집니다. 2. 빌더 패턴(Builder 패턴) 사용하기 CartRespFindAllDTO res..
Builder 패턴 Builder 패턴은 객체 생성에 관련된 디자인 패턴으로, 객체를 생성하는 방법과 표현하는 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 합니다. DTO에 Builder를 사용하는 주요 이유는 다음과 같습니다: 1. 가독성 향상 객체 생성시에 원하는 매개변수를 선택적으로 입력하고 가독성 좋은 코드를 작성할 수 있습니다. 생성자에 많은 수의 매개변수가 있는 경우, 어떤 값이 어떤 변수에 할당되는지 이해하기 어렵습니다. 반면, Builder 패턴을 사용하면 각 변수에 어떤 값이 설정되는지 명확하게 파악할 수 있습니다. // Without Builder Product product = new Product(1, "Book", 1500, "Good book", "..
단일 책임 원칙(Single Responsibility Principle, SRP) - SOLID 원칙 중 하나로, 클래스는 오직 하나의 책임만 가져야 한다 단일 책임 원칙은 객체 지향 프로그래밍에서 SOLID 원칙 중 하나입니다. 이 원칙에 따르면, "클래스는 오직 하나의 책임만 가져야 한다"는 것입니다. 가장 쉽게 볼 수 있는 예시로 백엔드 개발을 할 때 Service와 Repository를 구분해서 개발을 하는 것입니다 Service는 비즈니스 로직, Repository는 데이터베이스 접근에 대한 책임을 가집니다. 그 결과, 계층 간 데이터 변경과 유지 보수의 용이함을 가지죠 단일 책임 원칙의 이해 만약 클래스나 메소드가 너무 많은 일을 담당하고 있다면, 그 기능을 수정하거나 변경하는 데 필요한 노..
데코레이터 패턴(Decorator Pattern) 데코레이터 패턴은 동일한 클래스의 다른 개체의 동작에 영향을 주지 않고 정적 또는 동적으로 개별 개체에 동작을 추가할 수 있는 디자인 패턴입니다. 이 패턴은 비헤이비어가 포함된 특수 래퍼 개체 안에 이러한 개체를 배치하여 개체에 새 동작을 연결하는 것과 관련된 구조적 패턴입니다. 데코레이터 패턴의 핵심 포인트 및 이점 데코레이터 패턴을 사용하면 구조를 변경하지 않고 객체에 새로운 기능을 추가할 수 있습니다. 런타임에 동작을 동적으로 추가하고 제거할 수 있기 때문에 상속 기반 접근 방식보다 더 유연합니다. 데코레이터를 함께 연결하여 복잡하고 복합적인 동작을 제공할 수 있습니다. 패턴은 클래스가 확장에는 열려 있지만 수정에는 닫혀 있는 개방-폐쇄 설계 원칙을..
berom
'Computer Science/디자인패턴' 카테고리의 글 목록