TIL (Today I learned

개방 폐쇄 원칙(Open Closed Principle)

코딩준우 2024. 3. 7. 22:47

개방-폐쇄 원칙(OCP, Open-Closed Principle)은 '소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다'는 프로그래밍 원칙이다.

각 동물들의 울음소리를 출력하는 hey()함수를 이용한 OCP 학습

  • 기존의 요구사항 고양이와 강아지의 대한 speak 구현
package solid;

interface Animal {
    void speak();
}

class Cat implements Animal {
    public void speak() {
        System.out.println("meow");
    }
}

class Dog implements Animal {
    public void speak() {
        System.out.println("bark");
    }
}
public class OpenClosedPrinciples {
    public static void hey(Animal animal) {
        animal.speak();
    }
    public static void main(String[] args) {
        Animal kitty = new Cat();
        Animal bingo = new Dog();

        hey(kitty);
        hey(bingo);
    }
}
  • 추가 요구사항 양과 소와 대한 speak 요청
package solid;

interface Animal {
    void speak();
}

class Cat implements Animal {
    public void speak() {
        System.out.println("meow");
    }
}

class Dog implements Animal {
    public void speak() {
        System.out.println("bark");
    }
}

class Sheep implements Animal {
    public void speak() {
        System.out.println("meh");
    }
}

class Cow implements Animal {
    public void speak() {
        System.out.println("moo");
    }
}
public class OpenClosedPrinciples {
    public static void hey(Animal animal) {
        animal.speak();
    }
    public static void main(String[] args) {
        Animal kitty = new Cat();
        Animal bingo = new Dog();
        Animal sheep = new Sheep();
        Animal cow = new Cow();

        hey(kitty);
        hey(bingo);
        hey(sheep);
        hey(cow);
    }
}
  • hey 함수의 변경없이 요구사항을 충족