Java

[IT국비지원교육_코딩_비전공자] 싱글톤 패턴 / 서비스 인터페이스

coolcode 2022. 3. 3. 19:01

// 싱글턴 생성시 다른 클래스에서 해당 클래스에 엑세스할 수 없도록

// 최초 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(); // memberDaolist메서드를 return 한다

}

@Override

public void register(MemberVo memberVo) { 

// 서비스 인터페이스에 quickPick으로 추상메서드 만든 후에 상단 MemberServiceImpl 오류뜨면 qick pickAdd unimplement method 한다

// 여기에 멤버 dao 객체 접근해서 register메서드 호출한다

memberDao.register(memberVo);

 

//서비스 인터페이스 생성 > 서비스 인터페이스를 상속하는 인터페이스impl 클래스 생성

//> 서비스 impl클래스에서는 dao 호출해서 기능 구현

//> 드디어 서비스까지 완성했다면 contoller 역할을 하는 servlet 만들러 간다

//근데 사실 그전에 , servlet에서 불러 올 jsp가 있어야 함

//jsp가 준비되면 서블릿에서 jsp 호출하여 클라이언트(사용자/웹브라우저)에 응답

//이제 삭제 기능 구현하러 간다!

//또 같은 패턴 > 이미 db > vo는 있으니 dao만들고 > 서비스 인터페이스 생성 > 서비스impl 만들고 dao리턴하는 메서드 생성

> 컨트롤러에서 서비스 호출하여 응답

//근데 이번에는 그냥 화면에 jsp view만 하는게 아니고 삭제하는 비즈니스 로직이 구현되어야 하니까 아마도 getPost쓸것이다