JAVA
[JAVA] OCP (개방 폐쇄 원칙)
준몽쓰
2025. 4. 6. 00:30
● OCP
- Open for extension : 새로운 기능의 추가나 변경 사항이 생겼을 때 , 기존 코드는 확장할 수 있어야 한다.
- Closed for modification : 기존의 코드는 수정되지 않아야 한다.
■ 새로운 차량의 추가
- Driver의 코드는 변경하지 않고, 다른 차들이 늘어나도 Car를 사용하는 Driver 코드 전혀 변경하지 않는다.
■ 확장에 열려있다는 의미
- Car 인터페이스를 사용해 새로운 차량을 추가할 수 있고 Car 인터페이스를 구현해서 기능을 추가할 수 있다는 의미 그러면 Driver도 Car 인터페이스를 통해 새롭게 추가된 차량을 자유롭게 호출할 수 있다.
■ 코드 수정은 닫혀 있다는 의미
- 새로운 차를 추가하게 되면 기능이 추가되기 때문에 기존 코드의 수정은 불가
■ 변하지 않는 부분
- Car의 기능을 사용하는 Driver는 코드를 수정할 필요가 없다. Car 인터페이스를 사용하는 클라이언트인 Driver의 코드를 수정하지 않아도 된다는 의미
■ 변하는 부분
- main()은 새로운 차를 생성하고 Driver에게 필요한 차를 전달해주는 역할은 당연히 코드 수정이 발생한다
[요약]
OCP란 새로운 기능이 추가되더라도 기존 코드를 수정하지 않고 확장할 수 있어야 한다.
다형성을 활용하고 역할과 구현을 잘 분리하면 새로운 걸 추가해도 대부분의 핵심 코드들을 그대로 유지할 수 있게 된다.