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란 새로운 기능이 추가되더라도 기존 코드를 수정하지 않고 확장할 수 있어야 한다.

다형성을 활용하고 역할과 구현을 잘 분리하면 새로운 걸 추가해도 대부분의 핵심 코드들을 그대로 유지할 수 있게 된다.