728x90
반응형
[디자인 패턴] 1. 싱글턴 패턴
1. 싱글턴 패턴(Singleton Pattern)이란?
: 싱글턴 패턴이란, 특정 객체가 단 하나만 존재해야 할 때 사용되는 디자인 패턴이다.
이 패턴을 따르는 클래스는 생성자가 여러번 호출되더라도, 실제로 생성되는 객체는 오직 하나이다.
이후로 호출된 생성자는 최초로 생성된 객체 하나를 리턴한다.
*Java에서는 생성자를 private으로 선언하여, 다른 곳에서 생성하지 못하게 만든다.
대신 값을 반아와야 할 때는 getInstance 메서드를 생성해 구현한다.
*공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)에서 많이 사용된다.
2. 왜 싱글턴 패턴을 사용할까?
싱글턴 패턴을 따르는 클래스들은 객체를 하나만 생성할 수 있기 때문에, 메모리 낭비를 방지할 수 있다.
또한 해당 인스턴스는 전역(static)이므로, 다른 클래스들이 공유할 수 있다는 장점이 있다.
*다만 싱글턴 인스턴스가 여러 클래스에서 호출되거나, 많은 데이터를 공유하면 결합도가 높아지게 된다.
package useful.ch04;
/*
* 디자인 패턴 살펴보기
* 1. 싱글톤 패턴이 뭘까?
* (1) 생성자를 프라이빗으로 만든다.
* (2) static 변수를 활용해서 내부에서 객체를 생성하고, 주소값을 할당한다.
* (3) 외부에서 유일하게 참조 할 수 있는 public 메서드를 제공한다.
*/
public class Company {
// 2. static 변수 활용 데이터 타입 선언
private static Company company;
// 1. 생성자의 접근 제어 지시자를 프라이빗으로 변경하면
// 외부에서 기본 생성자를 호출 할 수 없다.
private Company() {
}
// 3. 외부에서 접근 가능한 메서드를 만들어준다.
public static Company getInstance() {
if (company == null) {
company = new Company();
}
return company;
}
}
package useful.ch04;
public class CompanyTest {
public static void main(String[] args) {
// 생성 불가
// Company company = new Company();
// 고민! Company 객체에 어떻게 접근할 수 있을까?
// A 클래스에서 활용
Company company=Company.getInstance();
System.out.println(company);
// B 클래스에서 활용
Company company2=Company.getInstance();
System.out.println(company);
} // end of main
} // end of class
728x90
반응형
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 2. 템플릿 메서드 패턴 (0) | 2024.04.30 |
---|