ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 - 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를 이해하고 적용하면, 유지보수성과 확장성이 뛰어난 소프트웨어를 만드는 데 큰 도움이 될 것입니다.

    댓글

Paycis's