[IT국비지원교육_코딩_비전공자] 싱글톤 패턴 / 서비스 인터페이스
// 싱글턴 생성시 다른 클래스에서 해당 클래스에 엑세스할 수 없도록
// 최초 1번 객체 생성시 같은 클래스에서만 접근할 수 있는
접근제어자 private + static(공통자원) + final(상수/변경불가값) 키워드 사용
// 객체 생성 후 해당 객체에 엑세스 할 수 있는 getInstance 메서드 public static 키워드로 만들어준다
(memberService 객체를 리턴하는 메서드)
// 기본 생성자는 본 클래스에서만 접근할 수 있도록 private 키워드를 사용하여 만들어준다
public class MemberServiceImpl implements MemberService { // 서비스 인터페이스의 구현 클래스
private static final MemberService memberService = new MemberServiceImpl();
// 다형성 (인터페이스의 타입으로 자손클래스의 인스턴스를 만든다)
public static MemberService getInstance() {
return memberService;
}
private MemberServiceImpl() {}
private MemberDao memberDao = MemberDao.getInstance();
// db생성 > vo 생성 > dao 생성(db연동) > 서비스에서 dao 호출 > 서블릿에서 서비스 호출 & view 역할하는 jsp 호출하여 요청에 응답
// 서비스에서 dao 호출 해야하니까 getInstance()로 호출한 것!
DAO 만들기 (DB연동되는 서비스 메서드) > 서비스 인터페이스 생성 > 서비스Impl 에서 dao호출 > 기능별 컨트롤러 제작 서비스 인터페이스 생성 후 구현클래스에서 아래와 같이 dao 를 호출할 수 있다
@Override
public List<MemberVo> list() {
return memberDao.list(); // memberDao의 list메서드를 return 한다
}
@Override
public void register(MemberVo memberVo) {
// 서비스 인터페이스에 quickPick으로 추상메서드 만든 후에 상단 MemberServiceImpl 오류뜨면 qick pick에 Add unimplement method 한다
// 여기에 멤버 dao 객체 접근해서 register메서드 호출한다
memberDao.register(memberVo);
//서비스 인터페이스 생성 > 서비스 인터페이스를 상속하는 인터페이스impl 클래스 생성
//> 서비스 impl클래스에서는 dao 호출해서 기능 구현
//> 드디어 서비스까지 완성했다면 contoller 역할을 하는 servlet 만들러 간다
//근데 사실 그전에 , servlet에서 불러 올 jsp가 있어야 함
//jsp가 준비되면 서블릿에서 jsp 호출하여 클라이언트(사용자/웹브라우저)에 응답
//이제 삭제 기능 구현하러 간다!
//또 같은 패턴 > 이미 db > vo는 있으니 dao만들고 > 서비스 인터페이스 생성 > 서비스impl 만들고 dao리턴하는 메서드 생성
> 컨트롤러에서 서비스 호출하여 응답
//근데 이번에는 그냥 화면에 jsp view만 하는게 아니고 삭제하는 비즈니스 로직이 구현되어야 하니까 아마도 getPost를 쓸것이다