<aside> <img src="/icons/light-bulb_gray.svg" alt="/icons/light-bulb_gray.svg" width="40px" /> S, O, L, I D
</aside>
<aside> <img src="/icons/pentagon-one-fifth_gray.svg" alt="/icons/pentagon-one-fifth_gray.svg" width="40px" /> 단일 책임 원칙
객체는 오직 하나의 책임을 가져야 한다.
⇒ 수학을 계산하는 함수를 가진 클래스는 수학만 해야하고, 프로그램의 다른 기능까지 관여하면 유지보수가 힘들어진다.
그러므로, 한 객체의 한 기능만 넣는 것을 권장한다.
</aside>
<aside> <img src="/icons/pentagon-two-fifths_gray.svg" alt="/icons/pentagon-two-fifths_gray.svg" width="40px" /> 개방 - 폐쇄 원칙
객체는 확장에 대해서는 개방적이고, 수정에 대해서는 폐쇄적이야 한다.
⇒ 한 몹의 움직임을 계산하는 클래스가 있다면, 다른 몹의 움직임을 계산하는 것은 개방적이지만, 다른 몹 때문에 다른 몹의 클래스를 변경하는 것은 폐쇄적이어야 한다.
</aside>
<aside> <img src="/icons/pentagon-three-fifths_gray.svg" alt="/icons/pentagon-three-fifths_gray.svg" width="40px" /> 리스코프 치환 원칙
자식 클래스는 언제나 부모 클래스를 대체할 수 있다.
⇒ 이는 클래스 상속과 깊은 연관이 있으며, 이를 지키지 않는다면 부모 클래스의 의미가 달라지기에 클래스 상속받은 자식 클래스는 부모 클래스의 역할에 맞아야한다.
</aside>
<aside> <img src="/icons/pentagon-four-fifths_gray.svg" alt="/icons/pentagon-four-fifths_gray.svg" width="40px" /> 인터페이스 분리 원칙
범용적인 인터페이스보다는 클라이언트가 실사용하는 인터페이스를 만들어야 한다.
⇒ 자신이 필요한 기능만 가짐으로써 재 컴파일, 재 배포과정을 생략하고 효율적으로 작업할 수 있게 된다.
⇒ 한 클래스에서 인터페이스를 쪼개어서 클라이언트에게 필요한 기능만 전달하게 된다.
</aside>
<aside> <img src="/icons/pentagon-alternate_gray.svg" alt="/icons/pentagon-alternate_gray.svg" width="40px" /> 의존성 역전 원칙
추상성이 높고 안정적인 상위 클래스는 구체적이고 불안정한 하위 클래스에 의존해서는 안된다.
⇒ 객체 지향 인터페이스를 통해 이 원칙을 준수할 수 있다.
</aside>
last update : 2023-09-26