싱글톤 (Singleton)
전체 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있는데, 단 하나만 생성된 이 객체를 싱글톤이라고 한다. 싱글톤을 이용하는 이유는 최초 한번의 new 연산자를 통해서 고정
tavi.tistory.com
서비스 클래스를 개발 했다면 서비스 클래스를 이용해서 객체를 생성한 뒤 실행한 메소드를 호출하도록 코드를 작성하게 된다.
그런데 대다수의 서비스 클래스는 객체를 여러번 만들더라도 실제로 수행하는 기능은 동일한 경우가 많다.
ReadArticleService service1 = new ReadArticleService();
ReadArticleService service2 = new ReadArticleService();
Article article1 = service1.read(messageId);
Article article2 = service2.read(messageId);
Article article3 = service1.read(messageId);
예를 들어 위 코드에서 service1과 service2는 서로 다른 ReadArticleService 객체를 참조하는 래퍼런스인데 service1.read() 메소드를 두 번 실행하나 service2.read() 메소드를 실행하나 실행 되는 결과는 동일하다.
위와 같이 한 개의 서비스 객체를 여러번 사용하는 것과 매번 새로운 서비스 객체를 생성해서 사용하는 것의 기능상 차이가 없다면,
싱글톤 패턴 작업으로 매번 새로운 서비스 객체를 생성하지 않고 한 개의 객체를 재사용 하도록 구현할 수 있다.
ReadArticleService service1 = ReadArticleService.getInstance();
Article artcile = service1.read(messageId);
ReadArticleService service2 = ReadArticleService.getInstance();
위 코드를 싱글톤 패턴이 적용된 클래스로부터 객체를 가져와 사용한다고 가정 했을 때,
생성자를 직접 사용하지 않고 객체에 접근 할 수 있도록 해주는 getInstance 메소드를 이용해서 객체를 구한 뒤 필요한 메소드를 실행하는 것을 알 수 있다.
또한 getInstance 메소드는 매번 동일한 객체를 리턴 하기 때문에 위 코드에서 service1과 service2는 같은 객체를 참조한다.

'Dev > Java' 카테고리의 다른 글
FileUpload API를 이용한 파일 업로드 구현 (0) | 2022.09.27 |
---|---|
파일 전송을 위한 multipart/form-data (0) | 2022.09.27 |
(JSP2.1) 답변형 게시판 구현 - 테이블 생성과 Article 클래스 (0) | 2022.09.26 |
JSTL - 코어 태그 2 (if, choose, forEach, forTokens) (0) | 2022.09.22 |
JSTL - 코어 태그 <c:set>, <c:remove> (0) | 2022.09.21 |
댓글