한 방향에서만 값을 추가하고 제거할 수 있는 자료구조 입니다. 가장 먼저 추가된 값이 가장 마지막에 제거되는 방식 입니다.
public class Stack01 {
private int[] arr = new int[10000]; // 임의의 크기가 10000인 배열 생성
private int pointer = 0;
public void push(int value){
this.arr[this.pointer] = value; // pointer의 값의 index에 value 값 저장
this.pointer++;
}
public int pop(){
int value = this.arr[this.pointer-1]; // 현재 pointer에서 -1
this.pointer--; // pointer 감소
return value; // 꺼낸 값 반환
이전 시간에 추상 클래스, 클래스 분리, 인터페이스를 하였고 ConnetionMaker 인터페이스의 구현체인 AwConnectionMaker,LocalConnectionMaker 에서 주입 받아야하는 관계가 되었습니다.
주입 받는 부분을 모아 놓은 것이 Factory 입니다. 이렇게 모아두게 되면 객체를 한곳에서 관리 할 수 있게 됩니다.
public class UserDaoFactory {
public UserDao awsUserDao() {
UserDao userDao = new UserDao(new AwsConnectionMaker());
return userDao;
}
public UserDao localUserDao() {
UserDao userDao = new UserDao(new LocalConnectionMaker());
return userDao;
}
}
장점:
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class) // 스프링 테스트를 사용하기 위한 설정
@ContextConfiguration(classes = UserFactory.class) // 설정정보 불러온다.
class UserDaoTest {
@Autowired //의존 관계 자동으로 주입 한다.
ApplicationContext context; //ApplicationContext 인터페이스 선언 한다..
@Test
void addAndSelect() {
UserDao userDao = context.getBean("awsUserDao", UserDao.class);
String id = "18";
User user = new User(id, "백기선", "1525");
userDao.add(user);
User selectName = userDao.findById(id);
Assertions.assertEquals("백기선", selectName.getName());
}
}
실습을 진행하며 다양한 처음 보는 용어가 많이 나왔습니다. 그래서 정리 해봤습니다.