일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- java
- til
- 면접을 위한 CS 전공지식 노트
- 삼성청년SW아카데미
- 객체지향
- exception
- 관계형 데이터베이스
- 데이터베이스 모델링
- Computer Science
- 모두를 위한 컴퓨터 과학(CS50)
- CS기초지식
- ERD
- 상속
- w3schools
- 기초프로그래밍
- edwith
- 예외처리
- Compute Science
- WebProgramming
- 알고리즘
- 이진법
- SSAFY 9기
- 부스트코스
- ssafy
- SW
- CS 기초지식
- CS50
- Java Programming
- CS 기초
- 모두를 위한 컴퓨터 과학
- Today
- Total
Joslynn의 하루
대용량 웹서비스를 위한 MSA Full-Stack 개발자 양성 과정 -9일차 노트 필기_Private Consturctor, 싱글톤 클래스, MVC 구조_220728 본문
대용량 웹서비스를 위한 MSA Full-Stack 개발자 양성 과정 -9일차 노트 필기_Private Consturctor, 싱글톤 클래스, MVC 구조_220728
Joslynn 2022. 7. 28. 17:40private 생성자
class Test{
private Test(){} // constructor
// 중요!! 내부 안에서 자신을 생성해서 리턴해주는 메소드를 제공
public static Test getInstance(){ // static 필수
Test t = new Test();
return t;
}
// Test 객체를 생성해서 리턴
// instance: 객체화 된다는 뜻에서 객체 생성 역할을 하는 메소드명으로 주로 사용
}
-------------------------------
new Test(); // 외부 생성 불가
Test t = Test.getInstance();
t. 속성;
t.method이름();
Test t1 = Test.getInstance();
Test t2 = Test.getInstance();
Test t3 = Test.getInstance();
// static 메소드에서 형성된 세 개의 서로 다른 Test 객체
: 외부에서 직접 객체 생성을 막음 // 생성자가 외부에서 접근이 불가능하기 때문에;
: 사용자가 임의대로 만들어 사용하지 못하게 함
: 내부 안에서 자신을 생성해서 리턴해주는 메소드를 제공
: 위 예제에서는 private 생성자를 가지고 있는 객체이므로 메소드를 통해 객체 Test를 가져온다.
: 해당 메소드는 private 생성자를 가진 객체 내부에 있으므로 객체 생성이 불가능한 상황이다; 즉 호출이 용이하게 하려면 ** static 필수 **
private 생성자의 효용
: 사용자가 직접 객체를 생성해서 마음대로 쓰지 못하도록 막는다; 다만 내부적으로 직접 객체를 리턴
: 임의대로 해석하지 못하도록 함
: 주로 사용하는 사례는 **싱글톤 클래스**를 만들 때 많이 사용; 객체가 100번 만들어져도 같은 주소를 공유하고 있는 객체
: 싱글톤을 만들려면 private 생성자 필요
싱글톤 클래스
예제 1)
class Test{
private static Test t = new Test();
/* **중요 포인트** static: static 메소드가 접근할 수 있도록 함
private으로 객체 생성 은닉
*/
private Test(){} // constructor
public static Test getInstance(){ // static 필수
return t;
}
-------------------------------
new Test(); // 외부 생성 불가
Test t = Test.getInstance();
t. 속성;
t.method이름();
Test t1 = Test.getInstance();
Test t2 = Test.getInstance();
Test t3 = Test.getInstance();
// t1, t2, t3가 모두 같은 객체;
: 비지니스 로직, DB 연결 등의 객체 == 많은 객체가 필요없음 for 메모리 공간 관리;
싱글톤 클래스 생성 방법
1) private 생성자를 만든다.
2) static 메소드를 제공한다. (직접 객체 생성 및 리턴);
3) 맴버필드에 static으로 자기 자신을 생성해서 저장; // 메소드를 여러번 호출
// framework 등에서 주로 사용;
MVC구조
: 용이한 유지보수를 위해 개발에도 디자인 패턴 적용;
: 다양한 디자인 패턴 중 하나인 MVC (Model, View, Controller로 구분)
- Model : Service영역(Business Logic : 알고리즘구현)
DAO(Data Access Object) - DB연동부분
DTO(Data Transfer Object ) = VO(Value Object)
// Back-end 분야
-View : GUI구현(화면구성) // Java - Console; 사용자와 직접 대면하는 부분;
-Controller
:Model과 View 사이에서 중간자 역할.
: 사용자 요청이 들어오면 그 요청에 해당하는 Service -> DAO 등을 호출해주고 그 결과를 받아 결과에 해당하는 View쪽을 호출해준다.
// View와 Back 단을 직접 연결하지 않음; 중간에 제어해주는 Controller;
// 규모가 큰 프로젝트에서 유지보수 및 코드 재사용을 위해서 반드시 필요;
-MVC구조를 사용해야하는 이유 : 유지보수, 재사용을 높히고 생산성을 좋게 하기 위함.
: service와 repository는 보통 싱글톤 클래스 적용;
ClassDiagram
1) is a 관계
- 상속(extends)
- 구현(implements)
2) has a 관계
- 맴버필드로
- 지역변수로