[Spring Boot] 자바 개발 코딩 패턴 학습하기

김현수·2024년 5월 23일
0

spring

목록 보기
5/9



🖋️ 자바 개발 코딩 패턴

개발 프로세스 흐름

  • 모델정의
  • 리포지토리 생성
  • 서비스 구현
  • 컨트롤러 생성
  • DTO 정의
  • Bean Config
  • 예외 처리
  • 테스트

Single Ton 패턴

  • 목적

    • 클래스에 인스턴스가 하나만 있는지 확인
    • 이에 대한 전역 액세스 지점 제공
  • Spring Boot 사용법

    • Spring Bean 은 기본적으로 Single Ton

Factory 패턴

  • 목적
    • 인스턴스화 논리를 클라이언트에 노출하지 않고 개체 생성
public interface Animal {
    void speak();
}

public class Dog implements Animal {
    public void speak() {
        System.out.println("Woof");
    }
}

public class AnimalFactory {
    public static Animal createAnimal(String type) {
        if ("dog".equalsIgnoreCase(type)) {
            return new Dog();
        }
        // Add more animals here
        throw new IllegalArgumentException("Unknown animal type");
    }
}

Builder 패턴

  • 목적
    • 복잡한 객체의 구성을 단순화
public class User {
    private String firstName;
    private String lastName;
    private String email;

    private User(UserBuilder builder) {
        this.firstName = builder.firstName;
        this.lastName = builder.lastName;
        this.email = builder.email;
    }

    public static class UserBuilder {
        private String firstName;
        private String lastName;
        private String email;

        public UserBuilder setFirstName(String firstName) {
            this.firstName = firstName;
            return this;
        }

        public UserBuilder setLastName(String lastName) {
            this.lastName = lastName;
            return this;
        }

        public UserBuilder setEmail(String email) {
            this.email = email;
            return this;
        }

        public User build() {
            return new User(this);
        }
    }
}

Repository 패턴

  • 목적

    • 데이터 소스에 액세스하는 데 필요한 로직을 캡슐화
  • Spring Boot 사용법

    • @Repository 주석은 클래스가 객체에 대한 저장, 검색
      업데이트 및 삭제 작업을 위한 메커니즘 제공

Service 패턴

  • 목적

    • 비즈니스 로직, 서비스 또는 운영 정의
  • Spring Boot 사용법

    • @Service 주석은 클래스를 서비스 제공자로
      표시하는데 사용

Dependency Injection 패턴

  • 목적

    • 개체를 직접 생성하는 대신 개체가 종속성 제공 허용
  • Spring Boot 사용법

    • Spring 은 기본적으로 종속성 주입 지원

Proxy 패턴

  • 목적

    • 다른 개체에 대한 대리자 또는 자리 표시자를 제공하여
      해당 개체에 대한 액세스를 제어
  • Spring Boot 사용법

    • Spring AOP(Aspect-Oriented 프로그래밍)는 프록시 패턴을 사용

Observer 패턴

  • 목적

    • 한 개체의 상태가 변경되면 모든 종속 항목에
      알림이 전송되도록 개체 간의 일대다 종속성을 정의
  • Spring Boot 사용법

    • 이벤트 처리를 구현

Template Method 패턴

  • 목적

    • 일부 단계를 하위 클래스로 연기하여
      메서드에서 알고리즘의 골격을 정의
  • Spring Boot 사용법

    • 추상 클래스에서 자주 사용
public abstract class DataProcessor {
    public void process() {
        fetchData();
        processData();
        saveData();
    }

    protected abstract void fetchData();
    protected abstract void processData();
    protected abstract void saveData();
}

public class ConcreteDataProcessor extends DataProcessor {
    @Override
    protected void fetchData() {
        System.out.println("Fetching data...");
    }

    @Override
    protected void processData() {
        System.out.println("Processing data...");
    }

    @Override
    protected void saveData() {
        System.out.println("Saving data...");
    }
}

DTO 패턴

  • 목적

    • 소프트웨어 애플리케이션 하위 시스템 간에 데이터를 전송
  • Spring Boot 사용법

    • 컨트롤러와 서비스 계층 간에 데이터를 전달하는 데 자주 사용
public class UserDTO {
    private String name;
    private String email;

    public UserDTO() {}

    public UserDTO(User user) {
        this.name = user.getName();
        this.email = user.getEmail();
    }

    // Getters and setters
}
profile
일단 한다

0개의 댓글