JAVA
Object OCP(Open Closed Principle)
고민말고생각하는사람
2024. 4. 5. 21:19
Bad Case
Object 와 같이, 모든 클래스에서 공통적으로 사용하는 정보를 지닌 클래스, 메소드가 없다면?
public class BadCaseObjectToString{
public static void print(BadCaseA bad){
String str = bad.badInfo(); // toString() 이 없으니 class에 정보 출력 메서드 작성해야 함.
System.out.println(str);
}
// Object가 없으면 메서드 파라미터 타입별로 메서드 계속 새로 정의 해줘야 함.
public static void print(BadCaseB bad){
String str = bad.badInfo(); // toString() 이 없으니 class에 정보 출력 메서드 작성해야 함.
System.out.println(str);
}
}
(다형성의 소중함이 느껴진다.)
구체적인 것에 의존하게 된다는 것은,
하나. 새롭게 추가하기 어려워진다는 것이요.
둘. 수정도 일일이 해야 해서 번거롭다는 것이고,
셋. 후임자 머리가 터져버린다는 것이니,
최대한 피해야 함이다.
추상적인 것에 의존하게 된다는 것은,
하나. 한정된 타입의 자유가 허락된다는 것이요.
둘. 다양한 타입을 담을 수 있다는 것이고,
셋. 유지보수가 용이한 것이니,
적극 활용해야 함이다.
public class GoodCaseObjectToString{
public static void print(GoodCase good){ //GoodCaseA, GoodCaseB, GoodCaseC 등 여러 타입이 담김
System.out.println(good);
}
}
캬. 코드가 확 주네!
다형성. 추상화 = 객체지향의 꽃!!!