S 단일 책임 원칙 (Single Responsibility Principle)

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

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

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

D 의존 관계 역전 원칙 (Dependency Inversion Principle)

단일 책임 원칙

모든 클래스는 단 한가지의 책임만을 갖고, 클래스 안에 정의되어 있는 모든 기능은, 이 하나의 책임을 수행하는데 집중되어 있어야 한다.

같이 수정해야될 것들은 묶고, 따로 수정해야될 것들은 분리하는 것

개방 폐쇄 원칙

클래스는 확장에 열려있어야 하며, 수정에는 닫혀 있어야 한다.

기존 클래스의 코드를 수정하지 않고도 기능을 확장할 수 있어야 한다.

리스코프 치환 원칙

부모 클래스의 인스턴스를 사용하는 위치에 자식 클래스의 인스턴스를 대신 사용 했을 때 코드가 원래 의도대로 작동해야 한다.

2가지 조건

  1. 형식적인 측면에서 자식 클래스가 오버라이딩하는 변쑤와 메소드가 부모 클래스에 있는 형식과 일치해야 한다.
  2. 내용적인 측면에서 자식 클래스가 부모 클래스의 의도를 크게 벗어나지 않아야 한다.

인터페이스 분리 원칙

지나치게 많은 추상 메소드를 가진 거대한 인터페이스를 관련된 추상 메소드들만 모여있도록 작은 크기의 인터페이스로 분리해야 한다.

그래야 각 클래스가 본인이 해당하는 인터페이스만 적절히 상속받게 된다.

의존 관계 역전 원칙

상위 모듈은 하위 모듈의 구현 내용에 의존하면 안된다. 상위 모듈과 하위 모듈 모두 추상화된 내용에 의존해야 한다.

이 말은 상위 모듈이 하위 모듈을 사용할 때 직접 인스턴스를 가져다가 쓰지 말라는 뜻이다. 그렇지 않으면 하위 모듈에 변화가 있을 때마다 상위 모듈의 코드를 자주 바꿔줘야 하기 때문이다.

→ 추상 클래스로 상위 모듈과 하위 모듈 사이에 추상화 레이어를 만든다.

이렇게 되면

  1. 상위 모듈에는 추상 클래스의 자식 클래스의 인스턴스를 사용한다는 가정 하에 코드를 작성
  2. 하위 모듈은 추상 클래스의 추상 메소드들을 오버라이딩 하면 된다.

Tags:

Categories:

Updated: