본문 바로가기
빅데이터 부트캠프/Java

빅데이터 부트캠프 63일차

by Mecodata 2022. 10. 6.

정적(static) 변수

- 클래스 객체 생성 없이 사용할 수 있는 필드와 메소드를 생성하고자 할 때 활용
(static을 설정하지 않고 필드를 불러오려면 따로 클래스 객체를 생성한뒤 [클래스 객체명.필드명]으로 불러와야함)
- static으로 지정한 필드는 중간에 수정 가능하지만 final static은 한번 설정하면 수정할 수 없게 완전히 고정시킴
- static final = 모든 영역에서 고정된 값으로 사용하는 상수 설정 (final static과 마찬가지로 한번 설정시 수정 불가능)

접근(Access) 제한

- 적용되는 위치
1. 클래스 선언구 : public, default
2. 필드 선언구 : public, protected, default, private
3. 생성자 선언구 : public, protected, default, private
4. 메소드 선언구 : public, protected, default, private


- public : 동일한 클래스, 동일한 package, 외부 package에서 호출 가능
- protected : 동일한 클래스, 동일한 package (단, 상속관계의 외부 package의 클래스에선 호출 가능)
- default[friendly] = 동일한
package에서만 access 가능
- private : 동일한
class 내에서만 access 가능

싱글톤 패턴(Singleton Pattern)

- 객체의 인스턴스가 1개만 생성되는 패턴
- 클래스 외부에서 new 연산자로 생성자를 호출할 수 없게 막기 위해 사용
- private에 의해 클래스 외부에서 객체 수정 불가
- 다음의 예시의 경우 클래스 외부에서 객체를 얻기 위해서는 new Singleton()이 아닌 Singleton.getInstance() 메소드로 호출하는 방법만이 존재
- a = Singleton.getInstance();, b = Singleton.getInstance();인 경우에 a와 b는 동일한 객체(singleton)를 참조

public class Singleton {
	// 정적 필드	
	private static Singleton singleton = new Singleton(); 
	
    	// 생성자
	private Singleton(){} 
    
    	// 정적 메소드
	public static Singleton getInstance(){
		return singleton;
	}
}

MVC(Model, View, Controller) 패턴

- 하나의 프로젝트를 구성할 때 그 구성요소를 세가지 역할로 구분한 패턴
- 사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고 그 데이터를 바탕으로 View를 통해 출력하여 사용자에게 전달

1. 모델(Model)
- 데이터를 가진 객체
- 사용자가 편집하길 원하는 모든 데이터를 저장 (재사용 가능해야함)
- 데이터 변경이 발생하면 변경 발생에 대한 통지를 수신할 수 있도록 구현해야함
- 주로 데이터 요청 메소드들로 구성
- 뷰(View), 컨트롤러(Controller)에 대한 어떤 정보도 있으면 안됨

2. 뷰(View)
- 데이터 및 객체의 입출력(StartView/EndView)을 담당
- 사용자가 볼 결과물을 생성하기 위해 모델로부터 컨트롤러를 거쳐 데이터를 받아옴
- 데이터 변경이 발생하면 변경 발생에 대한 통지를 수신할 수 있도록 구현해야함
- 모델(Model), 컨트롤러(Controller)에 대한 어떤 정보도 있으면 안됨

3. 컨트롤러(Controller)
- 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터Model에게 요청하고, 데이터를 View에 반영해서 사용자에게 전달
- 주로 데이터를 요청해서 결과값을 반환받는 메소드를로 구성
- 모델(Model)과 뷰(View)의 중간 통로이므로 모델(Model)과 뷰(View)에 대한 정보가 있어야 함

댓글