각각의 원칙의 앞글자를 따서 SOLID 원칙이라고 부른다.
단일 책임의 원칙(SRP : Single Responsibility Principle)
- 클래스는 하나의 책임만을 가진다.
개방 폐쇄의 원칙(OCP : Open-Closed Principle)
- 확장에는 열려있고, 변경에는 닫혀있어야 한다.
- 추가사항이 발생하더라도 기존 구성요소는 수정이 일어나지 말아야 한다.
리스 코브 치환의 원칙(LSP : Liskov Substitution Principle)
- 상위 타입의 객체는 언제나 하위 타입의 객체로 치환할 수 있어야 한다.
- 즉, 상속은 is-A 관계일 때만 상속관계로 존재해야 한다.
인터페이스 분리의 원칙(ISP : Interface Segregation Principle)
- 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
- 범용 인터페이스를 만들지 말고 적정한 기능에 따라 분리시켜야 한다.
의존성 역전의 원칙(DIP : Dependency Inversion Principle)
- 고수준 모듈은 저수준 모듈에 직접 의존해서는 안된다.
- 클래스를 참조할 때 구체적인 클래스보다는 인터페이스나 추상 클래스와 의존 관계를 맺도록 해야 느슨하고 유연한 시스템이 된다.
- 의존 관계를 맺을 때, 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 변화가 거의 없는 것에 의존하라는 원칙.
- 상위클래스가 하위클래스 하나하나를 if(A is subA)... 식으로 코드를 짜면 안된다는 소리.
'🛡️ 기술 면접용 질문들 > 프로그래밍 관련' 카테고리의 다른 글
Big-O 표기법 (0) | 2021.04.15 |
---|---|
객체지향의 특징 (0) | 2021.04.14 |
클래스(Class) vs 구조체(Struct) (0) | 2021.04.13 |
오버로딩(Overloading) vs 오버라이딩(Overriding) (0) | 2021.04.12 |
박싱(Boxing) vs 언박싱(Unboxing) (0) | 2021.04.12 |