티스토리 뷰
반응형
개발일지 24일차(2018-08-09)
전체 목록, 진행 상황 보기 : 링크
Singleton Design Pattern
시스템에 객체를 단 한번 생성해서 공유해 사용하고자 할 때 적용하는 디자인패턴
how? 외부에서 객체 생성할 수 없게 생성자에 private 을 명시
static 변수 초기화 시점에 자신의 객체를 생성
static 메서드로 한번 생성된 객체를 공유한다.
ex) 회원수 조회.jsp ----new MemberDAO()--> MemberDAO()
검색.jsp ----new MemberDAO()-->
위와 같이 동일한 객체를 반복해서 생성해 사용하므로 메모라낭비-->
이 경우 Singleton Pattern 을 적용해 시스템 상에서 단 한번 객체를 생성해 여러 곳(jsp) 에서 사용하게 한다.
이 후 Spring Framework 에서 객체 운영의 기본 방식이 Singleton 으로 운용된다.
code 예) 예외처리가 있을경우
class MemberDAO(){
private static MemberDAO instance;
private MemberDAO throws Exception{
}
public static MemberDAO getInstance(){
if(instance==null)
instanc=new MemberDAO();
return instance;
}
}
Ex) CompanyDAO.class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package test.singleton; //Singleton Design Pattern 연습 class CompanyDAO{ // class loading 시점에 단 한번 생성 private static CompanyDAO instance = new CompanyDAO(); // 외부에서 생성할 수 없게 private 생성자로 정의 private CompanyDAO() { System.out.println("CompanyDAO 객체 생성"); } // 외부에서 현 객체를 사용할 수 있또록 static 메서드를 정의 public static CompanyDAO getInstance() { return instance; } public String findInfo() { return "회사정보"; } } public class TestSingletonDesignPattern { public static void main(String[] args) { //error : private 생성자이므로 외부에서 생성불가 /*CompanyDAO dao =new CompanyDAO(); System.out.println(dao.findInfo());*/ // CompanyDAO 객체의 주소값(레퍼런스)를 반환받는다. CompanyDAO dao = CompanyDAO.getInstance(); System.out.println(dao.findInfo()); CompanyDAO dao2 = CompanyDAO.getInstance(); System.out.println(dao.findInfo()); CompanyDAO dao3 = CompanyDAO.getInstance(); System.out.println(dao.findInfo()); } } | cs |
반응형
'전문연준비 개발일지' 카테고리의 다른 글
[JAVA] Collection <List><Map> 간단 개념 정리 (0) | 2018.08.11 |
---|---|
[JAVA] Static_abstract_interface 간단 정리 (0) | 2018.08.11 |
Servlet LifeCycle과 계층구조 (0) | 2018.08.07 |
[전문연 취업준비기] 개발일지 21일차 JSP&Servlet 개념 (0) | 2018.08.06 |
[전문연 취업준비기] 개발일지 8일차-static-abstract-interface (0) | 2018.08.05 |