객체지향 설계 5원칙(SOLID 원칙)
- Programming
- 2020. 3. 29. 00:38
요약 : 자신 클래스 안에 응집도를 높이고, 타 클래스들 간 결합도를 낮춘다( High Cohesion - Loose Coupling ),
응집도가 높고, 결합도를 낮추도록 설계
소프트웨어는 재사용이 많아지고, 수정이 최소화되어야 유지보수가 용이하다.
S-SRP(Single responsibility principle) 단일 책임 원칙
- 모든 클래스는 단 하나의 책임을 가진다.(클래스를 수정할 이유가 오직 하나여야 한다)
- 예) 계산기 클래스, 계산을 하는 책임과 GUI를 나타낸다는 책임이 분리되어야 한다.(계산기 클래스에 GUI까지 있으면, SRP 위반이다)
O-OCP(Open Closed Principle) 개방 - 폐쇄 원칙
- 확장에 대해서 개방, 수정에 대해서 폐쇄
- 캐릭터 하나를 생성 할 때, 각각의 캐릭터 움직임이 다를 경우 움직임의 패턴 구현을 하위 클래스에 맡긴다면 케릭터 클래스의 수정이 필요 없다. 움직임의 패턴만 재정의 하면된다(확장에 대한 개방)
L-LSP 리스코프 치환 법칙
- 자식클래스는 언제나 자신의 부모 클래스르 교체할 수 있다. 부모클래스가 들어갈 자리에 자식 클래스를 넣어도 계획대로 잘 작동해야 한다.
Student s = new Student();
Person p = (Person)s;
와 같이 업 캐스팅 해도 문제가 없다.
I-ISP : 인터페이스 분리 원칙
- 클라이언트가 자신이 이용하지 않는 메서드에 의존하면 안된다.
- 자신이 사용하지 않는 인터페이스는 구현하지 말아야한다. 하나의 일반적인 인터페이스 보다, 여러개의 구체적인 인터페이스가 좋다.
- 사용하지 않는 함수를 implement시키지 말고, 여러개의 구체적인 클래스를 생성해 implement 시켜서 깔끔한 구조로 만든다.
D-DIP : 의존성 역전 법칙
- 상위클래스는 하위클래스에 의존해서 안된다.
참고
https://limkydev.tistory.com/77
https://tenlie10.tistory.com/1
'Programming' 카테고리의 다른 글
디버깅 방법 (0) | 2020.05.12 |
---|---|
REST API 장점 (0) | 2020.03.29 |
GET과 POST 차이 (0) | 2020.03.29 |