객체지향설계 5원칙 S.O.L.I.D

이녀석들은 뭐하는 애들인가

  • 객체지향 설계시 지켜야 하는 5가지 원칙들의 앞글자를 딴것이다.
  • 순서는 노상관이다.

1. 단일 책임의 원칙 - 클래스 하나에 너무 많은 책임을 넣지마라. 근데 기준은 너가 정한다.

책임 = 기능 이다. 수정시 영향도를 낮추는 주요한 원칙이다.

2. 개방 폐쇄의 원칙 - 확장에는 열려있게, 변경에는 닫혀있게 설계해라.

- 추상화 사용을 통한 관계를 구축하기를 권장하는 의미이다.
- 추상클래스,인터페이스를 통한 관계를 구축하여 확장은 쉽고, 변경에는 영향도가 없어지도록 분리해라?

3. 리스코프 치환의 원칙 - 하위타입은 언제나 상위타입으로 전환이 가능해야한다.

- 코드에는 문제가 없더라도, 부모타입의 설계 목적에도 부합하도록 설계해라. -> 부모의 동작의도대로 흘러가도록 설계해라
- Map a = new HashMap(); 같이 구현해서, 사용해도 문제 없도록 하는거다
- > 변수는 Map타입으로, Map메서드만 사용가능하지만 객체는 HashMap이기 때문에 각각의 기능으로 수행되고, 수정시에도 Map을 상속받는 다른 클래스로 변경이 쉬워진다.

4. 인터페이스 분리의 원칙 - 인터페이스를 기능별로 잘 분리하고, 수정하지 말아라

- 인터페이스의 단일책임과 비슷하다. 기능별로 잘 분리하고, 수정을 최소화할수 있도록 처음부터 생각하라.

5. 의존성 역전의 원칙 - 어떤 클래스를 참조할때, 직접참조하지 말고 상위 인터페이스나 추상클래스를 참조해라.

- 리스코프 치환의 원칙을 따라 설계했다면, 의존성 역전의 원칙을 따르기 쉬워진다.
- 의존관계를 맺을때, 변화기 쉬운것 보다, 변화하기 어려운 것에 의존하라는 것이다.