Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Java
- 스프링 모달창
- IP
- 깃 명령어
- 이클립스 오라클 연동
- Servlet 맵핑
- 사용자 데이터그램 프로토콜
- GROUP BY
- 객체협력
- spring annotation
- 형변환
- 추상 메서드
- 템플릿
- AOP란?
- 오라클 비교연산자
- static 예제
- react
- static메서드
- 모달창 여러개
- 다중 모달창
- singleton
- 싱클톤패턴
- order by
- oracle 연동
- static
- 리스트 모달창
- 다운캐스팅
- 상속
- SUB Query
- downcasting
Archives
- Today
- Total
모든지 기록하자!
[Java] singleton 패턴 본문
728x90
객체 지향 프로그램에서 인스턴스를 단 하나만 생성하는 디자인 패턴을 싱글톤(singleton) 패턴이라고 한다.
아래 예제로 간단하게 알아보자
public class Company {
//전체에서 유일하게 사용 할 인스턴스
private static Company instance = new Company();
private Company(){}
//외부에서 사용하기 위해 public method생성
//객체를 생성하지 않고 호출하기 위해 static으로 선언
public static Company getInstance() {
if(instance == null) // instance가 null일경우 하나를 생성해준다.
instance = new Company();
return instance;
}
}
싱글톤 패턴에서는 생성자를 반드시 명시적으로 만들고 그 접근 제어자를 private로 지정해야 한다.
명시적으로 생성자를 구현해놓지 않으면 여러 개의 인스턴스가 생성될 수 있기 때문이다.
그렇기 때문에 직접 Default생성자를 구현하고 외부에서 생성자를 호출하지 못하게 priavate로 선언한다.
외부에서 사용하기 위해 public method를 생성한다.
객체를 생성 후에 method를 호출해야 하기 때문에 객체를 생성하지 않고 호출하기 위해 static으로 선언한다.
public class CompanyTest {
public static void main(String[] args) {
Company c1 = Company.getInstance();
// 클래스 이름으로 getInstance() 호출하여 참조변수 대입
Company c2 = Company.getInstance();
Company c3 = new Company(); //error
System.out.println(c1 == c2); //true
// c1의 값과 c2의 값은 동일하다
}
}
singleton 패턴으로 객체를 생성했기 때문에 c1과 c2의 값은 동일하다.
728x90
'Java' 카테고리의 다른 글
[Java] 객체 간 협력 예제 ( static ) (0) | 2021.05.14 |
---|---|
[Java] 변수의 유효 범위 (scope) (0) | 2021.05.13 |
[Java] 암호화 / 복호화 (0) | 2021.05.13 |
[Java] 배열을 이용한 예제( 1차원배열의 합, 2차원배열의 합, 잔돈구하기) (0) | 2021.05.12 |
[Java] static 변수 (0) | 2021.05.12 |
Comments