[OOP] SOLID 5대 원칙 SRP 단일 책임 원칙

2023. 10. 20. 09:37Spring

SOLID 5대 원칙
  1. 단일 책임 원칙 (Single Responsibility principle)
  2. 개방 폐쇄 원칙 (Open Close Principle)
  3. 리스코프 치환 원칙 (Liscov Substitution Principle)
  4. 인터페이스 분리 원칙 (Interface Sergregation Principle)
  5. 의존성 역전 원칙 (Dependency Inversion Principle)
단일 책임 원칙 (SRP)

단일 책임 원칙은 객체는 오로지 하나의 기능과 수행 책임을 가져야 한다.

해당 원칙을 지키지 않고 코드를 작성하면 하나의 객체가 여러가지의 기능을 수행할 경우 객체 변경에 대한 엄청난 영향력을 끼칠 것이다.

때문에 이러한 점을 유의한 상태로 코드를 작성하도록 하자

 

간단한 예시

❌ SRP 위반 코드

해당 코드는 Animal 클래스 내부에 cry 내부에 Dog와 Cat 기능을 한번에 담당하게 된다. 두개의 기능이 하나의 cry 메서드에 있다.

public class Animal {

    private String animal;

    public void setAnimal(String animal) {
        this.animal = animal;
    }

    public void cry () {

        if(animal == "Dog") { // 강아지
            System.out.println("bark!");
        }
        else if(animal == "Cat") { // 고양이
            System.out.println("meow..");
        }
    }

}

 

⭕️ SRP 적용 코드

해당 코드는 Animal 클래스를 추상클래스로 변경하고 해당 클래스를 하위 클래스에서 할당 받아 사용하고 있다. 이러한 경우에는 Dog, Cat에서 각각의 메서드를 생성해서 구현했다. 하나의 클래스 내부에 하나의 메서드(기능)이 존재하는 것을 확인할 수 있다

abstract class Animal {
    abstract void cry();
}

class Dog extends Animal {
    @Override
    void cry() {
        System.out.println("bark!!!");
    }
}

class Cat extends Animal {
    @Override
    void cry() {
        System.out.println("Meow...");
    }
}

 

김영한 스프링 핵심 원리 - 기본편