[CS 공부] 22.10.09

minyoon·2022년 10월 9일
0

CS공부

목록 보기
4/12

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


SRP(Single Responsibility principle) → 단일 책임 원칙

- 한 클래스는 하나의 책임만 가져야 한다.
- 변경이 있을 때 파급효과가 적으면 단일 책임 원칙을 잘 따른 것
- ex) UI 변경, 객체의 생성과 사용을 분리
- 책임의 크기를 적절히 잘 조절해야 함
- 속성이 단일 책임을 지키지 못하는 경우: (동물 class에 꼬리 길이 속성이 있는 경우)
- 메서드가 단일 책임을 지키지 못하는 경우: (동물 class에 걷기 메서드가 있는 경우)

OCP(Open / closed principle) → 개방 폐쇄의 원칙

- 소프트웨어 요소는 확장에는 열러있으나, 변경에는 닫혀 있어야 한다.
- 다형성을 활용해서 기능의 확장은 하지만, 해당 기능을 변경하면 안된다.
- 하지만 DB를 바꿀때와 같은 경우는 client쪽의 코드의 일부 수정이 불가피하다. 이 때는 객체를 생성하고 연관관계를 맺어주는 별도의 조립, 설정자가 필요하다.

LSP(Liskov substitution principle) → 리스코프 치환 원칙

- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
- 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위한 원칙
- ex) 자동차 인터페이스의 악셀은 앞으로 가라는 기능, 뒤로 가게 구현하면 LSP위반, 느리더라도 앞으로 가야함

ISP(Interface Segregation principle) → 인터페이스 분리 원칙

- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 자동차 인터페이스 → 운전 인터패이스, 정비 인터페이스로 분리
- 사용자 클라이언트 → 운전자 클라이언트, 정비사 클라이언트로 분리

DIP(Dependency inversion principle) → 의존성 역전 법칙

- 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.”
- 구현 클래스에 의존하지 말고, 인터페이스에 의존해야 한다.
profile
궁금한게 많은 사람🧐

0개의 댓글