자바로 싱글톤 패턴 구현은 존나게 쉬우니 제가 먼저 한번 먹어보도록 하겠습니다.
http://ideone.com/qP3gdD
끗
허접한 클래스 다이어그램으로 그려보면 다음과 같으며
밑줄친 static 변수와 메소드가 클래스 자신의 객체를 제어한다는 것을 알 수 있습니다.
싱글톤 패턴의 중요한 목적은 오로지 해당 클래스만이 자신의 객체를 가지고 있을 수 있게 하는 것입니다.
달리 말하면 객체를 단 한번만 생성하게끔 만들어 사용함으로써 쓸데없는 객체의 생성을 줄이는 것에 있습니다.
간단하게 제가 자주 쓰는 허접한 예제를 보겠습니다.
위의 클래스 다이어그램과 비슷하게 만들어 보았습니다.
JDBC 드라이버를 이용하여 DBMS와 연동하고자 할 때
만약 여러 다른 클래스에서 데이터베이스 연결 클래스 객체를 무지막지하게 생성해대고
그 객체마다 전부 수백개가 되는 레코드를 받아오는 쿼리를 보낸다고 한다면?
성능이 좋아서 잘 됩니다.
허나 그래도 닥치고 쓰자고 마음먹었기 때문에
이와 같이 DatabaseManager 라는 싱글톤 패턴을 적용한 허접한 클래스를 하나 만들었습니다.
생성자에 한번만 해도 되는 JDBC 드라이버 클래스를 불러오는 작업을 넣었습니다.
또한 외부 클래스에서 다음과 같이 접근할 수 없도록
생성자를 private로 만들었습니다.
그리고 쿼리 메소드를 두개 만듭니다.
그냥 select 쿼리 넣어서 리스트로 받아오거나 insert 쿼리로 데이터를 집어쳐넣는 작업입니다.
마지막으로 이것을 사용할 허접한 다른 클래스 예제입니다.
위와 같이 new 하여 객체를 새로 생성하지 않고, getInstance() 메소드를 통해 미리 생성된 객체를 받아와서 사용하게 됩니다.
만약 또 다른 클래스에서 DatabaseManager 클래스를 사용하려 할 때
위처럼 getInstance() 메소드로 접근함으로써
이미 SomeClass 에서 불러오느라 한번 생성된 객체를 다시 가져와 객체를 재사용할 수 있게 됩니다.
진짜 끝
틀린 내용이 있으면 쪽팔리므로 바로 글삭튀하겠습니다.
와 죽이네요 Java도 allocWithZone같은거 있음?
자 이제 프로토타입 패턴을 가르쳐주세요
공지로