스파르타 게임개발종합반(Unity)/TIL - 본캠프 매일 공부 기록

2024.05.30 TIL - 객체지향 특강2 정리(SOLID 원칙)

테크러너 2024. 5. 30.

SOLID 원칙

SOLID 원칙은 객체지향 설계의 다섯 가지 핵심 원칙으로, 견고하고 유지보수가 용이한 소프트웨어를 설계하는 데 목표를 두고 있다.

Single Responsibility Principle (단일 책임 원칙)

  • 한 클래스는 하나의 책임만 가져야 한다.
  • 클래스가 변경되는 이유는 하나여야 하며, 이는 클래스의 기능을 명확하게 구분짓는 데 도움을 준다.

Open/Closed Principle (개방-폐쇄 원칙)

  • 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하지만 수정에는 닫혀 있어야 한다.
  • 기존의 코드를 변경하지 않고도 시스템의 기능을 확장할 수 있어야 한다.

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

  • 서브(자식)타입은 기반(부모)타입으로 교체할 수 있어야 한다.

자식 클래스에서 base.sound()를 삭제하면 안된다. 부모말 잘 들어야한다.

 

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

  • SRP가 클래스 단일책임이라면, ISP는 인터페이스 단일책임
  • Class : is - a
  • Interface : has - a

 

Dependency Inversion Principle (의존 역전 원칙)

  • 상위 모듈은 하위 모듈에 의존해서는 안된다, 둘 다 추상화에 의존해야 한다.
  • 추상화는 구체적인 세부 사항에 의존하지 않아야 하며, 구체적인 사항은 추상화에 의존해야 한다.
  • 즉, 특정 클래스가 다른 클래스의 세부 구현에 직접 의존하지 않고, 인터페이스나 추상 클래스에 의존하도록 만드는 것
public interface Pay {
    String payment();
}

Pay의 공통적인 특징은 지불하는 것이다.

우선 공통부분을 추상화한 클래스를 만든다.

 

public class SamsungPay : Pay {
    public String payment() {
        return "samsung";
    }
}
public class KakaoPay : Pay {
    public String payment() {
        return "kakao";
    }
}

그럼 삼성페이든, 카카오페이든 Pay부분은 공통적으로 가지고 있고, 하위 클래스에서 구체적인 사항을 정할 수 있다.

반응형

댓글