● OCP
- Open for extension : 새로운 기능의 추가나 변경 사항이 생겼을 때 , 기존 코드는 확장할 수 있어야 한다.
- Closed for modification : 기존의 코드는 수정되지 않아야 한다.
■ 새로운 차량의 추가
- Driver의 코드는 변경하지 않고, 다른 차들이 늘어나도 Car를 사용하는 Driver 코드 전혀 변경하지 않는다.
■ 확장에 열려있다는 의미
- Car 인터페이스를 사용해 새로운 차량을 추가할 수 있고 Car 인터페이스를 구현해서 기능을 추가할 수 있다는 의미 그러면 Driver도 Car 인터페이스를 통해 새롭게 추가된 차량을 자유롭게 호출할 수 있다.
■ 코드 수정은 닫혀 있다는 의미
- 새로운 차를 추가하게 되면 기능이 추가되기 때문에 기존 코드의 수정은 불가
■ 변하지 않는 부분
- Car의 기능을 사용하는 Driver는 코드를 수정할 필요가 없다. Car 인터페이스를 사용하는 클라이언트인 Driver의 코드를 수정하지 않아도 된다는 의미
■ 변하는 부분
- main()은 새로운 차를 생성하고 Driver에게 필요한 차를 전달해주는 역할은 당연히 코드 수정이 발생한다
[요약]
OCP란 새로운 기능이 추가되더라도 기존 코드를 수정하지 않고 확장할 수 있어야 한다.
다형성을 활용하고 역할과 구현을 잘 분리하면 새로운 걸 추가해도 대부분의 핵심 코드들을 그대로 유지할 수 있게 된다.
'JAVA' 카테고리의 다른 글
[JAVA] LSP (리스코프 치환 원칙) (0) | 2025.04.07 |
---|---|
[JAVA] SRP (단일 책임 원칙) (0) | 2025.04.06 |
[JAVA] 다형성(2) - abstract, 인터페이스 (0) | 2025.03.30 |
[JAVA] 다형성(1) - 다형성 참조, 캐스팅, instanceof 연산자 (0) | 2025.03.23 |
[JAVA] 상속 (0) | 2025.03.20 |