📔
객체지향 5대 원칙 SOLID
April 07, 2024
SOLID (객체 지향 설계)
시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용 가능
단일 책임 원칙 (SRP; Single Responsiblity Principle)
- 한 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화 해야한다.
- 어떤 클래스나 모듈은 변경하려는 단 하나 이유만을 가져야 한다.
개방-폐쇄 원칙 (OCP; Open-Closed Principle)
- SW의 구성 요소 (모듈, 컴포넌트, 클래스, 메서드)는 확장에는 열려있고 변경에는 닫혀있어야 한다.
- OCP를 가능하게 하는 중요 매커니즘은 추상화와 다형성이다.
- 새로운 기능이 추가되는 경우, 기존에 제공하던 클래스(또는 메서드)를 수정하는 것이 아니라 새로운 클래스(또는 메서드)를 추가해서 기능을 확장한다.
리스코프 치환 원칙 (LSP; Liskov Subsitution Principle)
- 서브 클래스는 언제나 슈퍼 클래스를 대체할 수 있어야 한다.
- 슈퍼 클래스가 들어갈 자리에 서브 클래스를 넣어도, 원래대로 잘 작동해야 한다.
- 상속의 오용을 방지하게 하는 원칙이다.
인터페이스 분리 원칙 (ISP; Interface Segregation Principle)
- 한 클래스는 자신이 사용하지 않는 인터페이스의 메서드에 의존하지 않아야 한다.
- 하나의 일반적인 인터페이스 보다는, 여러 개의 구체적인 인터페이스가 낫다.
- SRP가 클래스의 단일 책임을 강조한다면, ISP는 인터페이스의 단일 책임을 강조한다.
UserService
,BoardService
(X) ->UserCreateService
,BoardCreateService
(O)
의존관계 역전 원칙 (DIP; Dependency Inversion Principle)
- 소프트웨어 모듈들을 분리하는 특정 형식을 지칭
- 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 반전시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다.
- 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다.
- 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.
출처 | wikipedia