차근차근/JAVA JSP

getInstance()

예쁜꽃이피었으면 2014. 7. 26. 01:40

http://lbass.tistory.com/1

프로그래밍 디자인 패턴중 싱글턴 패턴이 이러한 방법으로 쓰는 것인데 해당 클래스의 인스턴스를 여기저기 다른 클래스에서 새롭게 생성하지 못하고 하나의 인스턴스만 가지고 공유해서 쓰기 위하여 이러한 방법을 쓰게 됩니다.

싱글턴 클래스로 쓰는 것들은 보통 생성자를 public이 아닌 private로 선언해서 다른 클래스에서 이 클래스의 인스턴스를 new를 통해서 생성하지 못하게 하고 항상 getInstance() 함수를 통해서만 인스턴스를 갖도록 제한을 합니다.

싱글턴 패턴은 유용하고, 다양하게 사용이 되니 잘 알아두시면 좋습니다.

 

 

 

 

http://blog.daum.net/cliffhangers/7576503

new와 getInstance()의 차이

public class UI{
static UI me;

UI getInstance(){
if(me==null){
}me=newUI();
return me;
}
스태틱이라 한번만 만들면 계속 만들어져있다.

UI u=UI.getInstance();

new를 하게 되면 각각의 객체가 만들어진다는 것이고, 위의 것은 1개만 만들어진 발전된 형태이다. 속도가 빠르다. 메서드의 동기화가 아닌 객체의 동기화임.

이전에는 동기화를 썼다. 클래스와 클래스를 동기화시키는방법이다. 속도가 떨어짐.

쓰레드부분에서도 동기화가 되야한다. 채팅프로그램에서 소켓은 하나만 열려있기 때문에 주고 받는것이 동시에 안된다. 이때 동기화가 되면 동시에 주고받는것이 가능하다. 한쪽이 쓰면 한쪽을 막아주고, 반대쪽이 쓰면 한쪽을 막아주는것이 동기화다.


참고: classforName()도 객체를 생성하며, 문자열을 처리한다.

 

 

 

 

 

 

http://jamocorporation.blogspot.kr/2014/05/javanew-getinstance.html

[Java]new와 getInstance의 차이

new생성자를 통한 객체 선언

NewObject obj = new NewObject();

getInstance메서드로 객체 선언

NewObject obj = NewObject.getInstance();

생성자를 통한 객체​ 선언은 일반적인 경우
메서드를 통한 객체 선언은 싱글톤 패턴을 적용한 경우

요청시마다 동일한 객체를 매번 생성하지 않고, 최초 호출시 JVM에 정적(static)인 클래스의 인스턴스를 생성해서 사용하고자 함이 이유입니다. 

즉, 메모리의 효율적 관리를 위하여 JVM내에 유일하게 객체생성을 한 후 사용하는 경우에는 싱글톤 패턴을 사용 결과적으로 new와 getInstance는 일반적 객체생성과 싱글톤 패턴을 통한 객체생성의 차이점이라 볼 수 있습니다.

 


반응형

'차근차근 > JAVA JSP' 카테고리의 다른 글

UTF-8 개발에 관한 정리입니다.  (0) 2014.07.26
request.setcharacterencoding  (0) 2014.07.26
request.setAttribute / request.getAttribute  (0) 2014.07.26
자바/Java URLEncoder와 URLDecoder  (0) 2014.07.26
URLConnection  (0) 2014.07.26