객체지향 설계 5원칙
- SRP(Single Responsibility Principle) - 단일 책임 원칙
- OCP(Open-Closed Principle) - 개방-폐쇄 원칙
- LSP(Liskov Substitution Principle) - 리스코프 치환 원칙
- ISP(Interface Segregation Principle) - 인터페이스 분리 원칙
- DIP(Dependency Inversion Principle) - 의존관계 역전 원칙
이번에 알아볼 것은 SOLID의 O인 OCP(Open-Closed Principle) - 개방-폐쇄 원칙에 대해 알아볼 것이다.
소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고,
수정에 대해서는 닫혀 있어야 한다.
- WIKIPEDIA -
OCP 예시
개방-폐쇄 원칙은 추상화가 핵심 요소이다. 저번에 예로 들었던 스위치로 알아보자.
class Switch {
String switchOn(String machine){
return "Switch on " + machine;
}
String switchOff(String machine){
return "Switch off " + machine;
}
}
각 메소드에 매개변수를 주어 해당 기기의 전원이 키고 끄는 것을 확인할 수 있게 했다.
이렇게 하면 스위치의 기능을 사용하고 싶을 때, 상속을 받아 사용할 수 있다. 그리고 해당 기능을 수정한다고 했을 때 Switch 클래스를 직접 수정하지 않고 상속받은 클래스에서 오버라이딩하여 기능을 확장할 수 있게 된다.
느낀점
개방-폐쇄 원칙은 이해하기가 조금 어려웠다. 인터페이스도 생각해보고 상속도 생각해보고 하니까 좀 더 쉽게 이해하기 쉬운게 상속이라서 예제도 상속에 관련지어 했다. 그리고 저번 글에도 나왔던 스위치로 예시를 들었다. 여름이라 에어컨과 선풍기를 하루종일 켜놓고 살기에 지금 날씨와 생각해보면 적절하다고 생각했다.
조금 더 딥하게 조사하면 끝도 없을 것 같아서 조금만 적었다. 다음에 정리하게 되면 발생할 수 있는 문제 등을 좀 조사해 봐야겠다.
'TIL > 잡학다식' 카테고리의 다른 글
[잡학다식] 의존관계 역전 원칙(DIP: Dependency Inversion Principle) (0) | 2022.07.22 |
---|---|
[잡학다식] 인터페이스 분리 원칙(ISP: Interface Segregation Principle) (0) | 2022.07.18 |
[잡학다식] 리스코프 치환 원칙(LSP: Liskov Substitution Principle) (0) | 2022.07.13 |
[잡학다식] 단일 책임 원칙(SRP: Single Responsibility Principle) (0) | 2022.07.10 |
[잡학다식] 객체지향 설계원칙 - SOLID (0) | 2022.06.29 |