SOLID 객체지향 5대 원칙

박성민·2020년 10월 19일
0

iOS

목록 보기
19/30

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

1. 단일 책임 원칙 (Single Responsiblity Principle)

"클래스를 변경하는 이유는 단 한가지여야 한다."

▶︎ 하나의 클래스에는 하나의 책임만 져야 한다.
▶︎ 책임이 많으면 코드끼리 결합도를 높일 가능성이 높다. 따라서 다양한 사유로 코드가 변경 될 수 있다.
▶︎ 변경에 유연 / 이해하기 쉽게 / 재사용에 용이한 컴포넌트의 기반

2. 개방, 폐쇄 원칙 (Open Close Principal)

"클래스를 변경없이 확장할 수 있어야 한다."

▶︎ 확장에는 열려있고, 수정에는 닫힌코드를 개발
▶︎ 변경되는 것과 그렇지 않을 것을 구분, 두 지점이 만나는 곳에 인터페이스를 정의. 확장되는 부분이 인터페이스에 의존하기 때문에 내부코드를 수정하지 않아도 됨.

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

"자식클래스는 언제나 부모 클래스를 교체할 수 있어야 한다."

▶︎ 서브타입은 언제나 기반 클래스로 교체할 수 있어야 한다.
▶︎ 부모클래스 대신 자식 클래스를 가져다 써도 코드에 문제가 없어야 한다.
▶︎ 상속 관계에서는 일반화 관계가 성립해야 한다. 일반화 관계에 있다는 것은 일관성이 있다는 것이다.
▶︎ 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의 하지 않고 확장만 수행해야 한다.

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

"자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다."

▶︎ 하나의 일반적인 인터페이스 보다 여러개의 구체적인 인터페이스가 낫다.
▶︎ 인터페이스를 사용하면 유연한 구조와 결합도가 낮아지며, 불필요한 컴파일과 재배포를 막을 수 있다.

5. 의존 역전 법칙(Dependency Inversion Principle)

"구현체보다는 추상클래스에 의존해야 한다."

▶︎ 의존관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다 변화하기 어려운것, 거의 변화가 없는 것에 의존해야 한다.
▶︎ 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺어야 한다.

profile
iOS시작~

0개의 댓글