🧠 Java 복습 정리 (접근제한자 · 싱글톤 · MVC 패턴)
🔑 [ 주요 키워드 ]
| 키워드 | 설명 | 예시 |
|---|
| public | 모든 클래스에서 접근 가능 | public class Example {} |
| private | 현재 클래스 내에서만 접근 가능 | private int age; |
| (default) | 동일 패키지 내에서만 접근 가능 (생략 가능) | int count; |
| protected | 동일/하위 패키지 및 상속 관계에서 접근 가능 | protected String name; |
📦 기타 키워드
| 키워드 | 의미 | 설명 |
|---|
| import | 클래스 불러오기 | 다른 패키지의 클래스를 가져올 때 사용 |
| final | 수정 불가능 | 상수 선언 시 사용, 반드시 초기화 필요 |
| static | 객체 없이 사용 가능 | 프로그램 시작 시 메모리 로드, 종료 시 삭제 |
💡 예시 코드
public static void main(String[] args) {
System.out.println("Hello");
}
📘 [ 관례적인 사용법 ]
| 항목 | 설명 |
|---|
| getter/setter | private 멤버변수 접근을 위한 메소드 |
| public static final | 상수 선언 시 사용 |
🧩 [ 변수의 종류 ]
| 구분 | 설명 | 예시 |
|---|
| 🧠 멤버변수 | 클래스 내 전역 변수 | private int age; |
| ⚙️ 지역변수 | 메소드 내부 변수 | int num = 0; |
| 📨 매개변수 | 메소드 호출 시 전달받는 변수 | void test(int a) |
| 🧱 정적변수 | static이 붙은 변수 (공유됨) | static int count; |
🏗️ [ 클래스 / 객체 / 인스턴스 ]
| 구분 | 설명 | 예시 |
|---|
| 클래스(Class) | 객체 생성을 위한 설계도 | class Car {} |
| 객체(Object) | 속성과 기능을 가진 실체 | new Car() |
| 인스턴스(Instance) | 생성된 객체가 메모리에 존재하는 상태 | Car myCar = new Car(); |
🎨 [ 디자인 패턴 (Design Pattern) ]
| 항목 | 설명 |
|---|
| 📖 정의 | 소프트웨어 설계 시 자주 발생하는 문제를 효율적으로 해결하기 위한 설계 유형 |
| 🎯 목적 | 협업 및 유지보수 효율성 향상 |
🔁 [ 싱글톤 패턴 (Singleton Pattern) ]
| 항목 | 설명 |
|---|
| 📘 정의 | 프로그램 내 객체가 단 하나만 존재하도록 설계 |
| 🎯 목적 | 메모리 절약, 공유 객체 관리, 중복 생성 방지 |
| ⚙️ 특징 | private 생성자 + static 인스턴스 + getInstance() |
🧱 구현 순서
public class Example {
private static final Example instance = new Example();
private Example() {}
public static Example getInstance() {
return instance;
}
}
| 단계 | 설명 |
|---|
| ① | private 기본 생성자 선언 |
| ② | private static final 객체 생성 |
| ③ | getInstance() 메소드로 외부 접근 허용 |
📌 호출 방법 → 클래스명.getInstance();
🧱 [ MVC 패턴 ]
| 구분 | 설명 |
|---|
| 📘 정의 | Model, View, Controller로 분리하여 효율적 설계 |
| 🎯 목적 | 모듈화 / 협업 효율성 / 유지보수 향상 |
| ⚙️ 장점 | 코드 재사용, 유지보수 용이 |
| ⚠️ 단점 | 구조가 복잡해질 수 있음 |
| 💼 사용처 | Spring, Django 등 주요 프레임워크 |
🧩 [ MVC 구성 요소 ]
| 역할 | 담당 기능 | 주요 영역 |
|---|
| View 👀 | 입출력 담당 (UI) | 프론트엔드 |
| Controller ⚙️ | View ↔ Model 제어 / 데이터 전달 / 유효성 검사 | 백엔드 |
| Model 💾 | 데이터 관리 및 DB 연동 | 백엔드 |
🔹 Model 구성
| 구분 | 역할 |
|---|
| DAO (Data Access Object) | 데이터 접근 객체, DB 조작 |
| DTO (Data Transfer Object) | 데이터 이동 객체, 정보 전달용 |
🔄 [ MVC 데이터 흐름 ]
| 과정 | 흐름 |
|---|
| 📨 주문 요청 | View → Controller → Model(DAO) |
| 📤 주문 응답 | Model(DAO) → Controller → View |
📂 패키지 구조 예시
📁 controller
📁 model
┣ 📁 dao
┗ 📁 dto
📁 view