JAVA SOLID 설계 5대 원칙

Aram Kim·2025년 7월 15일

조각 지식

목록 보기
3/5

SOLID

SOLID는 객체지향의 이상적인 설계 원칙들을 의미한다.
이런 설계 원칙들을 한 줄로 요약하면 응집도는 높이고, 결합도는 낮은게 좋게 설계하라는 것이다.
그렇다면 응집도와 결합도는 뭘까? 간단히 말하자면
응집도 : 모듈이 독립적인 기능으로 정의되어 있는 정도
결합도 : 모듈간에 상호 의존하는 정도 똔느 두 모듈 사이의 연관 관계

SRP (Single Responsibility Principle) : 단일 책임 원칙

1. 정의

  • 하나의 객체(클래스)는 반드시 하나의 동작만의 책임(역할)을 갖는다는 원칙
  • 클래스는 단 하나의 책임을 가져야하며 해당 책임을 완전히 캡슐화해야 함

하나의 클래스에서 여러 동작(메소드)을 하게끔 설계하는 것은 SRP 설계에 위반된다는 행위를 말하는 것이다.

2. 예제

  • SRP 원칙 위배
public class Report {
    private String title;
    private String content;

    public Report(String title, String content) {
        this.title = title;
        this.content = content;
    }

    public void printReport() {
        System.out.println("Title: " + title);
        System.out.println("Content: " + content);
    }

    public void saveToFile(String fileName) {
        try {
            java.io.FileWriter writer = new java.io.FileWriter(fileName);
            writer.write("Title: " + title + "\\n");
            writer.write("Content: " + content + "\\n");
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 해결

OCP (Open Closed Principle) : 개방 폐쇄 원칙

  • <오늘 숙제>


1. 개념

  • 추상화와 연관이 있다.

    예를들어 구글 로그인 짜고나서 네이버 로그인이 필요할 때 호출한 쪽과 정의한 쪽 다 수정해줘야 한다.
    화면가져다 쓰는데 다 고쳐줘야한다.
    그런데 이거를 로그인이라고 추상화만 해놓으면 네이버를 붙이던 구글을 붙이면서 수정할 때 그냥 따로 추상화를 가져와서 수정만 하면 되기때문에 개방되어있는것은 추상화해둔데 그리고 폐쇄는 네이버나 구글을 수정해두는데라고 볼 수 있다.
    그러니까 한 단계 올려서 두리뭉실하게 추상화 해두는 것을 추상화라고한다.
    이거를 인터페이스라고 할 수 있다. 이게 인터페이스를 쓰는 이유라고 볼 수 있다.
    ==>그래서 추상화란 확장시키기 위해 두리뭉실하게 해 둔 것 얘를 OCP라고 한다.

  • 확장에 대해서는 개방되어 있어야 하고 , 수정에 대해서는 폐쇄되어야 함

  • 이를 위해 추상화, 인터페이스, 다형화를 이용할 수 있다.

LSP (Liskov Substitution Principle) : 리스코프 치환 원칙

ISP (Interface Segregation Principle) : 인터페이스 분리 원칙

DIP (Dependency Inversion Principle) : 의전 역전 원칙

profile
Backend Developer • AWS Cloud • QA Engineer

0개의 댓글