알고리즘의 특정 단계가 선택적으로 적용된다면?
필수적이지 않는 부분을 서브클래스에서 구현하도록 만들고 싶을때 후크 사용 뭐야이게..
추상메서드가 너무많아지면? 인터페이스 분리 법칙 사용하면되지
후크 갈고리 뭔가 걸다
뭔갈 걸다? 체크를 한다?
sort() 메소드를 디자인 당시 자바에서는 배열의 서브클래스를 만들지 못하지만
어떤 배열도 정렬 기능 사용할 수 잇도록 만들어야됨.
그래서 정적 메소드 정의하고 대소 부분을 구현체에서 구혀낳게.!
대소 비교하는 부분을 정렬된 객체에서 구현하도록 만들기.
import junit.framework.TestCase;
public class MyTest extends TestCase {
protected int value1;
protected int value2;
// setUp() 메소드는 테스트 전에 실행되는 후크 메소드입니다.
protected void setUp() {
value1 = 2;
value2 = 3;
}
// tearDown() 메소드는 테스트 후에 실행되는 후크 메소드입니다.
protected void tearDown() {
value1 = 0;
value2 = 0;
}
// 실제 테스트 메소드
public void testAdd() {
double result = value1 + value2;
assertTrue(result == 5.0);
}
}
public abstract class PaymentProcessor {
public final void processPayment(PaymentInfo paymentInfo) {
validatePaymentInfo(paymentInfo);
processPaymentDetails(paymentInfo);
sendNotification(paymentInfo);
}
protected abstract void processPaymentDetails(PaymentInfo paymentInfo);
protected void validatePaymentInfo(PaymentInfo paymentInfo) {
// 결제 정보 유효성 검사 로직
}
protected void sendNotification(PaymentInfo paymentInfo) {
// 결제 완료 후 알림 전송 로직
}
}
public class CreditCardPaymentProcessor extends PaymentProcessor {
@Override
protected void processPaymentDetails(PaymentInfo paymentInfo) {
// 신용카드 결제 처리 로직
}
}
public class PayPalPaymentProcessor extends PaymentProcessor {
@Override
protected void processPaymentDetails(PaymentInfo paymentInfo) {
// 페이팔 결제 처리 로직
}
}