개발 관련/객체 지향

객체 지향 설계의 5가지 원칙(SOLID)

라이언 IT 2021. 10. 2. 12:04

좋은 객체 지향 설계에 대해 간략히 정리해봅니다.

 

사실 프로그래밍 할 때 이런 원칙을 고려하지 않고 개발하는 게 많았지만

나중에 소스는 지저분 해지고 기능 수정 시 여러 고려사항 또한 많았습니다.

이로인해 다시 한번 설계를 잘 해야겠다고 느낍니다.


[OOP(Object Oriented Programming) 설계 5가지 원칙(SOLID)]

 

1. 단일 책임 원칙 - SRP(Single Responsibility Principle)

 - 한 클래스는 하나의 책임만 가져야 함

 - 중요한 기준은 변경 영향도이다. (변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것)

 - 여러 책임을 갖게 되면 그만큼의 관여도와 변경에 대한 요구가 있을 수 있고 해당 모듈(클래스) 수정이 빈번하게 일어날 수 있음

 

2. [중요] 개방-폐쇄 원칙 - OCP(Open/Closed Principle)

 - 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

 - 즉, 기능 변경 및 확장에는 유연하게 대응하면서 그 기능을 호출 쪽에선 변경이 없어야 한다.

 

3. 리스코프 치환 원칙 - LSP(Liskov Substitution Principle)

 - 다형성의 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것으로 다형성을 지원하기 위한 원칙입니다.

 - 예로, 자동차 인터페이스의 엑셀은 앞으로 가는 기능으로, 뒤로 가게 구현하면 LSP 위반입니다.

 

4. 인터페이스 분리 원칙 - ISP(Interface Segregation Principle)

 - 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스가 하나보다 낫다.

 - 클라이언트의 목적/용도에 적합한 인터페이스를 분리하고, 자신의 목적에 부학한 Public 인터페이스만 접근.

 - 유지보수에도 좋고, 각 기능별로 쪼개는 게 서로 간 영향도도 낮아 더 세밀하게 제어할 수 있다.

 

5. [중요] 의존관계 역전 원칙 - DIP(Dependency Invesion Principle)

 - 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻

 - 예로, 자동차로 비교한다면 구현 클래스가 "K3", "아반떼" 라면, 인터페이스는 "자동차 역할" 이다.

'개발 관련 > 객체 지향' 카테고리의 다른 글

객체지향 이란  (0) 2022.03.01