Adapter parts_20260528

JAEWOONG LEE·2026년 5월 28일
post-thumbnail

Mr Jin let me solve above one,
I missed real meaning and I just got class name
But after gemini, they were sharing that this is for adapter.
It was that difficult point for me
and I just realized should code adapter class like child part..
but in the child part, should write down Paypal
method is from main.

main using interface format again.

package oop4practice.eg21adapter_recheck;

import java.util.Scanner;

//결제 처리기 인터페이스

interface PayProcessor
{
void processPay();

}
//기본 결제 처리자
class DefaultProcessor implements PayProcessor
{
public void processPay()
{
System.out.println("결제 요청 처리중");
System.out.println("처리 완료");
}
}

//문제
//외부 결제 api-> 바꿀 수 없음!->소스를 바꿀 수 없고 진행 되게끔만 만들것
class PayPalAPI
{
public void handlePay(String apikey)
{
System.out.println("API 키 확인중 "+apikey);
System.out.println("페이팔 결제 요청 처리중");
System.out.println("처리 완료");
}
}

class PayPalAdapter implements PayProcessor
{

private PayPalAPI payPalAPI;    //변수는 페이팔꺼로

public PayPalAdapter(PayPalAPI payPalAPI) //메소드도 페이팔 어댑터로 
{
    this.payPalAPI = payPalAPI;
}

//실행
public void processPay() //하지만 실행결과 폼은 부모 메소드로
{
payPalAPI.handlePay("Paypal_recognized");
}

}

class DanalAPI
{
public void handlePay(String apikey)
{
System.out.println("API 키 확인중 "+apikey);
System.out.println("다날 결제 요청 처리중");
System.out.println("처리 완료");
}
}

//주문 처리 객체
class OrderService
{
PayProcessor payProcessor;
OrderService(PayProcessor payProcessor)
{
this.payProcessor = payProcessor;
}

void processOrder()
{
System.out.println("주문 접수 ");
System.out.println("결제를 시작합니다. ");
payProcessor.processPay();
System.out.println("주문 완료 ");
}

}

public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);

System.out.println("결제 수단을 선택하세요 (1: 페이팔, 2: 다날");
int nPaySystem = scanner.nextInt();

PayProcessor payProcessor;  //메인에서의 변수는 그대로 

switch (nPaySystem) 
{
  case 1:
   payProcessor = new PayPalAdapter(new PayPalAPI());   //변수에서 페이팔 어댑터를 통해서 페이팔을 선택한다.
    break;

  default:
    System.out.println("결제 오류 - 매치되는 결제 시스템 없음");
     payProcessor = new DefaultProcessor();
    break;
}


OrderService orderService = new OrderService(payProcessor); //오더 서비스도 인터페이스 문법 그대로 //생성자에 해당 아이템을 삽입하는것과 같음 

orderService.processOrder();
scanner.close();

}
}

profile
just for programming test

0개의 댓글