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

Timo·2021년 4월 23일
0
post-thumbnail

SRP - 단일 책임 원칙
OCP - 개방 폐쇄 원칙
LSP - 리스코프 치환 원칙
ISP - 인터페이스 분리 원칙
DIP - 의존 역전 원칙

SRP - 단일 책임 원칙

“어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.” - 로버트.C.마틴

OCP - 개방 폐쇄 원칙

“소프트웨어 엔티티(클래스, 모듈, 함수)는 확장에 대해서는 열려 있어야 하지만 변경에 대해서는 닫혀 있어야 한다.” - 로버트.C.마틴

“자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.”

LSP - 리스코프 치환 원칙

“서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다.” - 로버트.C.마틴

하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는 데 문제가 없어야 한다.

ISP - 인터페이스 분리 원칙

“클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다.” - 로버트.C.마틴

  • 인터페이스 최소주의 원칙
: 인터페이스를 통해 메서드를 외부에 제공할 때는 최소한의 메서드만 제공하라.

상위 클래스는 풍성할수록 좋고, 인터페이스는 작을수록 좋다.

DIP - 의존 역전 원칙

“고차원 모듈은 저차원 모듈에 의존하면 안 된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다.”
“추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다.”
“자주 변경되는 구체(Concrete) 클래스에 의존하지 마라.” - 로버트.C.마틴

“자신보다 변하기 쉬운 것에 의존하지 마라.”

profile
나는 매일 성장하는 사람

0개의 댓글