객체 지향 설계

jooog·2022년 3월 27일
0

🖋 스프링(Spring)

스프링을 사용해 객체 지향 설계를 할 수 있는데 스프링은 다형성, OCP, DIP를 가능하게 만들어준다. 스프링 프레임워크를 사용해 코드를 작성하면 기존 코드의 변경 없이 기능을 확장할 수 있으며 하나의 부품을 갈아끼우는 것처럼 수월하게 확장성 있는 코드를 작성할 수 있다.

🖋 객체지향 설계의 원칙

객체 지향 설계 원칙에 따라 코드를 작성하는 방법

역할과 구현을 분리해 코드를 작성한다. 코드의 변경이 필요할 때는 역할을 담당하는 코드는 그대로 두고 구현 코드만 분리하면 된다.

인터페이스

그렇다면 객체 지향 설계의 원칙을 지키며 확장성 있는 코드를 작성하기 위한 이상적인 방법으로는 인터페이스를 통해 코드를 작성하는 것이다. 하지만 모든 코드에 인터페이스를 사용하면 추상화 비용이 발생할 수 있으니 기능을 확장할 가능성이 있는 코드만 구분하여 인터페이스를 사용하도록 한다.

🖋 코드로 살펴보기

Grade enum

public enum Grade {
    MIDDLE,
    HIGH
}

Student Class

public class Student {
    private Long id;
    private String name;
    private Grade grade;

    public Member(Long id, String name, Grade grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Grade getGrade() {
        return grade;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}

StudentRepository interface

public interface StudentRepository {

    void save(Student student);
    //student 객체를 저장하는 메서드
    
    Student findById(Long id);
    //아이디로 찾는 메서드
}

이런방식으로 interface를 만들고 해당 인터페이스를 구현하는 클래스를 만드는 방식으로 코드를 작성하면 확장에 유연한 코드를 작성할 수 있다.

이 글은 김영한님의 스프링 핵심 원리 강의를 듣고 정리한 내용입니다.

0개의 댓글