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 함수의 변경없이 요구사항을 충족