2023 - 01 - 31 (화)
객체지향 설계 SOLID 원칙
1. 단일 책임 원칙 (Single Responsibility Principal)
2. 개방-폐쇄 원칙 (Open-Closed Principal)
3. 리스코프 치환 원칙 (Liskov Substitution Principal)
4. 인터페이스 분리 원칙 (Interface Segregation Principal)
5. 의존관계 역전 원칙 (Dependency Inversion Principal)
단일 책임 원칙
-
클래스는 한개의 책임을 가져야한다.
-
구매기능에 문제가 생긴 경우, 구매를 처리하는 클래스만 수정해야한다.
-
만일 하나의 기능이 여러개의 클래스에 걸쳐서 구현된 경우 구매기능을 처리를 묶어놓은 클래스를 수정시 다른 오류를 파생시킬 수 있다.
-
유지보수의 효율성을 위함이다.
개방-폐쇄 원칙
-
확장에는 열려있어야 하고 변경에는 닫혀 있어야 한다.
-
기존에 생성된 상위 클래스 또는 인터페이스가 추가될 수 있으나 변경되지 않고 이를 구현한 하위 클래스들에서 상속받아 각각의 특징별로 정의한다.
-
추상화와 다형성의 개념이라고 볼 수 있다.
리스코프 치환 원칙
- 하위 타입 객체는 상위 타입 객체를 대신할 수 있다. (부모클래스를 자식클래스가 대체할 수 있음.)
- 상위 타입 객체를 하위 타입 객체로 치환해도 정상적으로 동작해야 함.
-
상속관계에서는 꼭 일반화 관계가 성립해야 함.
//Student는 Person을 상속받음. Student s = new Student(); Person p = (Person)s;
인터페이스 분리 원칙
-
인터페이스는 각 역할에 맞게 분리해야 한다.
-
인터페이스는 최소한의 기능만 제공한다. ( 여러가지 로직이 집약된 인터페이스를 구현한다기보다는 여러기능의 인터페이스를 분리하여 각각 구현한다. )
-
일반적인 클래스를 하나 구현해서 사용하지도 않는 함수를 implement 시키지 말고, 여러개의 구체적인 클래스를 생성해 implement시키면 깔끔한 구조가 된다.
의존성 역전 법칙
- 상위 클래스는 하위클래스에 의존해서는 안됨. (자식이 부모한테 의존해야하지 부모가 자식한테 의존하면 안됨..)