로버트 마틴 5가지 원칙
- SRP, OCP, LSP, ISP, DIP
SRP(Single Responsibility Priciple) 단일 책임 원칙
- 클래스는 하나의 책임(수행 작업)만 부여
- 하나의 작업을 모두 수행
- 클래스 변경(수정) 씨 변경 이유도 하나
OCP(Open Closed Priciple) 개방 폐쇄 원칙
- 기존 코드의 변경 없이 새로운 기능 추가
- 독립적인 작업 단위를 클래스로 분리, 캡슐화
LSP(Liskov Substitution Priciple) 리스코프 치환 원칙
- 기반 클래스와 파생 클래스에서 제공하는 연산은 일관성 있는 행위(behavior) 여야 함
- 기반 클래스 인스턴스를 파생 클래스 인스턴스로 대체해도 프로그램의 의미 불변
- Pre -> Pre` & Post` -> Post (if Pre then Pre` & in Post` then Post)
- Pre/Post: 기반 클래스 연산의 선행/후속 조건
- Pre`/Post`: 파생 클래스 연산의 선행/후속 조건
ISP(Interface Segregation Priciple) 인터페이스 분리 원칙
- 객체지향 설계 원칙
- 클래스에 특화된 인터페이스로 분리
- 클래스는 사용하는 해당 인터페이스만 구현
- 어떤 클래스가 다른 클래스에 의존할 경우 가능한 최소한의 인터페이스만 사용
public interface All {
public void walk( );
public void bark( );
public void fly( );
}
public interface Walkable {
public void walk( );
}
public interface Barkable {
public void bark( );
}
public interface Flyable {
public void fly( );
}
DIP(Dependency Inversion Priciple) 의존성 역전 원칙
- 의존관계는 가변적인 것보다 불변적인 것으로 설정
- 가변적: 구체적인 방식, 사물 등
- 불변적: 정책, 전략, 추상적인 개념 등
- 인터페이스, 추상 클래스에 의존관계 설정
'CS' 카테고리의 다른 글
[소프트웨어공학] 소프트웨어 테스트 - 1 (0) | 2022.10.03 |
---|---|
[소프트웨어 공학] 디자인 패턴 Design Pattern (0) | 2022.09.26 |
[소프트웨어 공학] 의존성 주입과 IoC (0) | 2022.09.26 |
[소프트웨어 공학] Maven (0) | 2022.09.26 |
[소프트웨어 공학] 객체지향 개발 프로세스 (0) | 2022.09.19 |