프로그래밍

[자바 기초] day17 : MVC 패턴(VO 두개 이상) 본문

자바/자바 기초

[자바 기초] day17 : MVC 패턴(VO 두개 이상)

시케 2023. 5. 30. 16:53
728x90
반응형

2023.05.25.목

VO 두개 이상인 MVC 패턴

객체의 자료형이 다르면 VO/DAO를 분리하여 만들어야 한다

다음 프로젝트는 Member, Product 두 가지의 자료형으로 구성되어 있다

 

MemberDAO

package model;

import java.util.ArrayList;

// 회원목록출력
// 회원가입,로그인,로그아웃,마이페이지,회원탈퇴
public class MemberDAO {
	private ArrayList<MemberVO> datas;

	public MemberDAO() {
		datas = new ArrayList<MemberVO>();
		datas.add(new MemberVO("admin", "1234", "관리자"));
		datas.add(new MemberVO("coding_helper", "timo", "작은 티모"));
	}

	public ArrayList<MemberVO> selectAll(MemberVO mVO) {
		return datas;
	}

	public MemberVO selectOne(MemberVO mVO) {
		return null;
	}

	public boolean insert(MemberVO mVO) {
		boolean flag = false;
		for (MemberVO data : datas) {
			if (data.equals(mVO)) {
				flag = true;
				System.out.println(" 로그: MemberDAO: insert(): 아이디 중복");
				break;
			}
		}
		if (flag) {
			return false;
		}
		datas.add(new MemberVO(mVO.getMid(), mVO.getMpw(), mVO.getName()));
		/*
		 * datas.add(new MemberVO()); -> datas DB공간에 new 새로운 데이터를 추가
		 * MemberVO(데이터1,데이터2,데이터3) -> 데이터들을 mVO에서 추출하면됨
		 */
		return true;

		// 1. mVO가 의미하는것 == 회원가입할 정보
		// 2. mVO를내가 가지고 있는 datas에 넣음
		// 3. PK이기 때문에 중복검사하고 성공시 add 실패시 반환
	}

	public boolean update(MemberVO mVO) {
		return true;
	}

	public boolean delete(MemberVO mVO) {
		return true;
	}
}

ProductDAO

package model;

import java.util.ArrayList;

// 목록출력,목록검색_이름,목록검색_가격순,목록검색_조회수
public class ProductDAO {
	private ArrayList<ProductVO> datas;
	private static int PK = 1001;

	public ProductDAO() {
		datas = new ArrayList<ProductVO>();
		datas.add(new ProductVO(PK++, "장갑", 12000, 2));
		datas.add(new ProductVO(PK++, "화장지", 1000, 1));
		datas.add(new ProductVO(PK++, "장화", 23000, 0));
		datas.add(new ProductVO(PK++, "지갑", 120000, 1));
		datas.add(new ProductVO(PK++, "화분", 5500, 2));
	}

	public ArrayList<ProductVO> selectAll(ProductVO pVO) {
		// 여러가지의 기능을 하나의 메서드에 작성
		// 높은 응집도를 위해

		if (pVO == null) {
			return datas;
		} else if (pVO.getName().equals("비싼상품") && pVO.getPrice() != 0) { // 더 비싼

			ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
			for (ProductVO data : datas) {
				if (data.getPrice() > pVO.getPrice()) {
					mdatas.add(data);
				}
			}
			return mdatas;

		} else if (pVO.getName().equals("싼상품") && pVO.getPrice() != 0) { // 더 싼

			ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
			for (ProductVO data : datas) {
				if (data.getPrice() < pVO.getPrice()) {
					mdatas.add(data);
				}
			}
			return mdatas;

		} else if (pVO.getName().equals("필터")) { // 필터검색

			ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
			for (ProductVO data : datas) {
				if (data.getPrice() >= pVO.getPrice() && data.getPrice() <= pVO.getCnt()) {
					mdatas.add(data);
				}
			}
			return mdatas;
		} else {

			// 상품목록 출력을 할때는 인자가 null이므로
			// pVO null이 아니라면 '이름으로 검색'
			ArrayList<ProductVO> mdatas = new ArrayList<ProductVO>();
			for (ProductVO data : datas) {
				if (data.getName().contains(pVO.getName())) {
					mdatas.add(data);
				}
			}
			return mdatas;

		}

	}

	public ProductVO selectOne(ProductVO pVO) {

		if (pVO.getName().equals("최고가")) { // 가장 비싼
			int max =datas.get(0).getPrice();
			int maxIndex = 0;
			for (int i = 1; i < datas.size(); i++) {
				if (max<datas.get(i).getPrice()) {
					max = datas.get(i).getPrice();
					maxIndex = i;
				}
			}
			return datas.get(maxIndex);

		} else if (pVO.getName().equals("최저가") && pVO.getPrice() == 0) { // 가장 싼

		}

		return null;
	}

	public boolean insert(ProductVO pVO) {
		return true;
	}

	public boolean update(ProductVO pVO) {
		return true;
	}

	public boolean delete(ProductVO pVO) {
		return true;
	}
}

 

https://github.com/jihyean/Java/tree/main/day17

 

GitHub - jihyean/Java

Contribute to jihyean/Java development by creating an account on GitHub.

github.com

 

728x90
반응형
Comments