전략패턴

    디자인패턴을 이용한 장바구니 기능 구현 - 레디스와 스프링부트 활용

    이커머스 프로젝트를 진행하면서 장바구니 기능에 추가 요구사항이 생겨 리팩토링 하는 과정을 기록합니다. 이번 리팩토링을 위해 전략 패턴과 팩토리 메소드를 사용하였습니다. 팩토리 메서드 패턴은 객체 생성을 위한 패턴으로, 객체를 생성하는 역할을 서브클래스에 위임하여 유연성을 제공합니다. 전략 패턴은 행위를 캡슐화하고 런타임에 행위를 변경할 수 있는 패턴입니다. 이 패턴은 애플리케이션의 일부를 동적으로 교체하고 다양한 전략을 적용할 수 있도록 도와줍니다. 기존 로직 Redis 저장소에 제품을 저장하는 기존 로직을 살펴보겠습니다. @Service class BasketItemService( ... ) { fun addBasketItem(basketItemRequest: BasketItemRequest) { //..

    [토비 스프링] CH3-1. 초난감 DAO의 예외처리와 해결

    [토비 스프링] CH3-1. 초난감 DAO의 예외처리와 해결

    초난감 DAO의 문제점 UserDao를 많이 개선했지만 아직 예외상황에 대한 처리가 안되어 있다는 문제가 있다. UserDao에 예외처리를 할 수 있도록 기능을 추가해보자. 예외처리 기능을 갖춘 DAO JDBC는 어떤 상황에서도 가져온 리소스를 반환하도록 try/catch/finally 구문 사용을 권장하고 있다. public void deleteAll() throws SQLException { Connection c = null; PreparedStatement ps = null; try { c = dataSource.getConnection(); ps = c.prepareStatement("delete from users"); ps.executeUpdate(); } catch (SQLException..

    [토비 스프링] Ch1. 오브젝트와 의존관계

    오브젝트와 의존관계 CH1 에서는 오브젝트의 설계와 구현, 동작원리를 집중적으로 살펴보자. 엉망진창의 UserDao 사용자 정보를 JDBC API를 통해 DB에 저장하고 조회할 수 있는 간단한 DAO를 만들어보자. DAO : DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트. 먼저 Dao에서 사용할 User객체를 생성한다. 위의 형식처럼 스프림 프레임워크에서는 자바빈 규약을 지켜 작성한다. 자바빈 : 디폴트 생성자와 프로퍼티를 가진 오브젝트 디폴트 생성자 : 파라미터가 없는 디폴트 생성자 프로퍼티 : 자바빈이 노출하는 이름을 가진 속성으로 getter, setter public class User { String id, name, password; public String get..