[IT]/java
java.DisignPattern.Singleton
givemebro
2021. 4. 14. 10:11
반응형
**Singleton Design Pattern**
why? 시스템 상에서 단 한번 객체를 생성해서 여러 곳에서 공유해 사용하고자 할 때 적용하는 설계 패턴
( 참고 - spring framework에서는 기본 객체 운용 방식이 singleton 이다 )
적용 방안
1) 생성자의 접근 제어자 private으로 명시해 외부에서 객체 생성하는 것을 막는다
2) private static 멤버변수 차원에서 클래스 로딩시점에 자신의 생성자를 이용해 객체를 생성하고 주소값을 저장한다
( 현 객체의 주소값은 static 영역( meta-space or class area ) 에 저장하게 된다 )
3) public static 메서드로 한번 만든 객체의 주소값을 외부에서 사용하도록 반환해주도록 정의한다
package test.pattern;
class Company {
private static Company instance = new Company();
private String comInfo = "회사정보";
private Company() {
System.out.println("Company 객체 생성");
}
public static Company getInstace() {
return instance;
}
public String getComInfo() {
return comInfo;
}
}
public class TestSingleton {
public static void main(String[] args) {
// Company c = new Company();
// System.out.println(c.getComInfo());
System.out.println(Company.getInstace());
System.out.println(Company.getInstace());
System.out.println(Company.getInstace().getComInfo());
}
}
public class ProductDAO {
private String driver = "oracle.jdbc.OracleDriver";
private String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
private String user = "scott";
private String pass = "tiger";
// 2. 스테틱을 이용해 new
private static ProductDAO instance = new ProductDAO();
// 1.private 생성자 만들기
private ProductDAO() {
}
// 3. instance를 가져다 쓸 메소드 선언
public static ProductDAO getInstance() {
return instance;
}
}
반응형