영보의 SystemOut.log

[Java] 자바 Enum 응용 결제/정산 시스템 만들기 본문

국비교육(아이티센 입사교육)/Java

[Java] 자바 Enum 응용 결제/정산 시스템 만들기

영보로그 2021. 10. 12. 14:06
반응형
자바/스프링 기반 디지털 융합 웹 개발자 양성과정 8일차

 

 

시나리오

 

 결제라는 데이터는 ‘결제 종류’와 ‘결제 수단’이라는 2가지 형태로 표현된다.

 예를 들어 신용카드 결제는 신용카드 결제라는 결제 수단이며, 카드라는 결제 종류에 포함된다.

 

 

 

소스 코드

 

PayGrop.java

package Enum응용실습;

import java.util.*;
import java.lang.*;
/*
    Arrays 클래스의 주요 메소드
        => static <T> List<T> asList(T..a)
            => 기능 : 전달받은 배열은 고정 크기의 List로 변환하여 변환해주는 메소드
 */


public enum PayGrop {
    CASH("현금", Arrays.asList("계좌이체","무통장입금","현장결제","토스")),
    CARD("카드",Arrays.asList("페이코","신용카드","카카오페이","배민페이")),
    ETC("기타",Arrays.asList("포인트","쿠폰")),
    EMPTY("결제종류없음",Collections.EMPTY_LIST);

    private String title;
    private List<String> payList;

    // 생성자
    PayGrop(String title, List<String> payList){
        this.title = title;
        this.payList = payList;
    }

    public static PayGrop findByPayCode(String code){
        // 자바 람다식, 스트림의 파이프 라인 연결
        return Arrays.stream(PayGrop.values()).filter(payGrop -> payGrop.hasPayCode(code)).findAny().orElse(EMPTY);
    }

    // 사용자 정의 메소드 구현
    public boolean hasPayCode (String code){
        return payList.stream().anyMatch(pay -> pay.equals(code));
    }

    public String getTitle() {
        return title;
    }

    public List<String> getPayList() {
        return payList;
    }
}

 

 

PayGropTest.java

package Enum응용실습;

import java.util.Scanner;

public class PayGropTest {

    private static final Object EMPTY = null;

    public static void main(String[] args) {
        for(PayGrop type : PayGrop.values()){
            System.out.print("결제 종류 : ");
            System.out.println(type.getTitle());
        }
        System.out.println();

        for(PayGrop type : PayGrop.values()){
            System.out.println(type.getPayList());
        }
        System.out.println();

        System.out.print("결제 수단을 입력하세요 >>> ");
        Scanner in = new Scanner(System.in);
        String payment_means = in.next();

        PayGrop pay = PayGrop.findByPayCode(payment_means);

        if(pay.equals(EMPTY)){
            System.out.println("결제 종류 : "+pay.getTitle());
        }else{
            System.out.println("결제 종류 : "+pay.getTitle());
        }
    }

}

자바 Enum 응용 결제/정산 시스템 만들기

반응형