-
자바 - OCP (Open Closed Principle / 개방-폐쇄원칙)Java 2023. 11. 22. 21:32
핵심개념
'자바 OCP(Open Closed Principle)는 소프트웨어 엔터티가 개방되어야 하며(확장 가능), 동시에 닫혀 있어야 한다(수정 불가)는 원칙을 의미합니다.'
자바 OCP(Open Closed Principle)는 솔리드(SOLID) 디자인 원칙 중 하나로, 소프트웨어의 설계와 아키텍처에 있어 중요한 역할을 합니다. 이 원칙을 이해하고 적용하면, 유지보수와 확장성이 좋은 소프트웨어를 만드는 데 도움이 됩니다.
자세한 설명
자바 OCP는 '개방-폐쇄 원칙'이라고도 하며, 이는 소프트웨어 구성 요소(클래스, 모듈, 함수 등)가 새로운 기능에 대해 '개방적'이어야 하며, 기존 코드의 수정 없이 기능을 추가하거나 변경할 수 있어야 한다는 원칙을 의미합니다. 동시에, 기존 코드는 '폐쇄적'이어야 하며, 즉 기존의 코드는 변경되지 않아야 합니다.
예시
예를 들어, 우리가 '동물'이라는 클래스를 가지고 있고, 이 클래스에는 '먹다', '달리다' 등의 메소드가 있다고 가정해봅시다. 이제 '새'라는 새로운 동물을 추가하려고 합니다. '새'는 '날다'라는 독특한 행동을 가지고 있습니다.
OCP를 따르지 않으면, 우리는 기존의 '동물' 클래스를 변경하여 '날다'라는 메소드를 추가해야 할 것입니다. 이렇게 되면 기존 코드에 대한 수정이 필요하게 되므로, 유지보수가 어렵고 버그를 유발할 수 있습니다.
반면에, OCP를 따르면 우리는 '새'를 '동물' 클래스를 상속받는 새로운 클래스로 만들고, '날다'라는 메소드를 '새' 클래스에 추가할 것입니다. 이렇게 하면 기존의 '동물' 클래스는 그대로 유지할 수 있고, 새 기능도 손쉽게 추가할 수 있습니다.
샘플 코드
// OCP를 따르지 않는 경우 class Animal { void eat() { ... } void run() { ... } void fly() { ... } // 새 기능 추가를 위한 수정 필요 } // OCP를 따르는 경우 class Animal { void eat() { ... } void run() { ... } } class Bird extends Animal { void fly() { ... } // 새 클래스에 새 기능 추가 }
이렇게 OCP를 이해하고 적용하면, 유지보수성과 확장성이 뛰어난 소프트웨어를 만드는 데 큰 도움이 될 것입니다.
'Java' 카테고리의 다른 글
자바 - LSP (Liskov Substitution Principle, 리스코프 치환 원칙) (0) 2023.11.22 자바 - SRP (Single Responsibility Principle, 단일책임원칙) (0) 2023.11.22 BufferedReader, BufferedWriter (0) 2021.05.21 json을 자바 객체로 변환하기 (0) 2021.05.20 visualVM으로 remote host 모니터링하기 (0) 2021.05.17