개방폐쇄원칙(OCP : Open/closed principle)
1을 준수하는 디자인 패턴💡 디자인 패턴(Design Pattern)
- 소프트웨어 개발자들이 소프트웨어 개발 과정에서 직면했던 일반적인 문제에 대해 재사용 가능한 해결책
package pattern.ex01;
public abstract class Booking {
// 서브클래스 오버라이드 방지
final void book() {
chooseRoute();
chooseDateAndTime();
pay();
}
void chooseRoute() {
System.out.println("출발지와 목적지를 선택하다.");
}
abstract void pay();
// 후크(Hook)
void chooseDateAndTime() {}
}
💡 후크(Hook)
- 추상 클래스에서 선언되지만 기본적인 내용만 구현되어 있거나 아무 코드도 들어있지 않은 메소드
package pattern.ex01;
// Taxi.java
public class Taxi extends Booking {
@Override
void pay() {
System.out.println("택시 요금을 지불하다.");
}
}
// Train.java
public class Train extends Booking {
@Override
void pay() {
System.out.println("기차표를 예매하다.");
}
@Override
void chooseDateAndTime() {
System.out.println("출발 날짜와 시간을 선택하다.");
}
}
package pattern.ex01;
public class User {
public static void main(String[] args) {
Taxi taxi = new Taxi();
taxi.book();
System.out.println("------");
Train train = new Train();
train.book();
}
}
💡참고