Single Responsibility principle : 단일 책임 원칙
Open Close Principle : 개방 폐쇄 원칙
Liscov Substitution Principle : 리스코프 치환 원칙
Interface Sergregation Principle: 인터페이스 분리 원칙
Dependency Inversion Principle : 의존성 역전 원칙
좋은 객체 지향 설계의 5가지 원칙 중 개방 폐쇄 원칙(OCP)에 대해 알아보겠습니다.
Open / Close Principle : 개방 폐쇄 원칙
확장에는 열려 있고, 변경에는 닫혀 있다.
회사에서 개발한 마우스는 모델 A와 모델 B가 있었으며, 코드는 다음과 같이 구성되어 있었습니다.
public int Sensitivity(String model){
if(model.equalse("A"){
// A 모델 감도 반환
} else if(model.equalse("B"){
// B 모델 감도 반환
}
}
회사는 신제품을 출시할 예정이고 점점 성장하고 있는 추세이기 때문에 모델이 추가될 때마다 계속 if 문을 수정할 경우 문제가 발생할 수 있고 유지보수가 어렵습니다.
이 상황을 OCP를 지키지 않았다 보면됩니다.
OCP를 지키기 위해 아래와 같이 코드를 수정하였습니다.
public interfase sensitivity{
int sensitivity();
}
감도를 의미하는 sensitivity 인터페이스를 구현했습니다.
class ModelA implements sensitivity{
@Override
public int sensitivity(int sensitivity){
// 모델 A 감도 반환
}
}
class ModelB implements sensitivity{
@Override
public int sensitivity(int sensitivity){
// 모델 B 감도 반환
}
}
class ModelC implements sensitivity{
@Override
public int sensitivity(int sensitivity){
// 모델 C 감도 반환
}
}
이와 같이 모델 객체는 sensitivity 인터페이스를 상속받도록 하였습니다.
이렇게 수정하여 기능에 대해 확장 가능하지만, 코드의 변경에는 닫혀 있기 때문에 OCP를 준수했다고 볼 수 있습니다.
'클린코드' 카테고리의 다른 글
DPI: 의존관계 역전 원칙 (0) | 2023.04.18 |
---|---|
ISP: 인터페이스 분리 원칙 (0) | 2023.04.17 |
LSP: 리스코프 치환 원칙 (0) | 2023.04.15 |
SRP: 단일 책임 원칙 (0) | 2023.04.12 |
계층형 아키텍처 (0) | 2023.04.11 |