일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- 프로그래밍
- 공부
- 자바
- 주말이다..
- squery
- 객체지향
- 테이블
- DB
- orcle
- ERWin
- 오라클
- 데이터베이스
- 공부를열심히
- html
- jsp
- 객체지향프로그래밍
- 웹프로그래밍
- web
- 웹
- 객제지향프로그래밍
- javascript
- Oracle
- UI
- Java
- 프로젝트
- 객제지향
- 코딩
- Project
- sql
- Today
- Total
햄찌개
JAVA - MVC 및 싱글턴패턴 본문
MVC 정의
MVC란 Model View Controller의 약자로 애플리케이션을 세가지의 역할로 구분한 개발 방법론이다.
사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.
(*비즈니스 로직 : 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성, 표시, 저장, 변경하는 부분을 일컫는다)
MVC 구성요소
모델 – 뷰 – 컨트롤러는 응용프로그램을 세 가지의 구성요소로 나눈다. 각각의 구성요소들 사이에는 다음과 같은 관계가 있다.
1) 모델 : 어떠한 동작을 수행하는 코드를 말한다. 표시 형식에 의존하지 않는다. 다시 말해, 사용자에게 어떻게 보일지에 대해 신경 쓰지 않아도 된다. 모델은 순수하게 public 함수로만 이루어진다. 몇몇 함수들은 사용자의 질의(query)에 대해 상태 정보를 제공하고 나머지 함수들은 상태를 수정한다.
2) 뷰 : MVC에서 모델은 여러 개의 뷰(view)를 가질 수 있다. 뷰는 모델에게 질의를 하여 모델로부터 값을 가져와 사용자에게 보여준다.
3) 컨트롤러 : MVC의 뷰는 여러 개의 컨트롤러(Controller)를 가지고 있다. 사용자는 컨트롤러를 사용하여 모델의 상태를 바꾼다, 이때 모델의 상태가 바뀌면 모델은 등록된 뷰에 자신의 상태가 바뀌었다는 것을 알리고 뷰는 거기에 맞게 사용자에게 모델의 상태를 보여준다.
싱글턴 패턴 정의
소프트웨어 디자인 페턴에서 싱글턴 패턴을 따르는 클래스는, 생성자가 여러차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다.
즉, 하나의 객체만을 생성해 이후에 호출된 곳에서는 생성된 객체를 반환하여 프로그램 전반에서 하나의 인스턴스만을 사용하게 하는 패턴이다.
(* 디자인 패턴 : 건축으로 치면 공법에 해당하는 것으로 소프트웨어의 개발 방법을 공식화한 것이다.)
싱글턴 패턴을 만들 때 동시성(Concurrency) 문제를 고려해서 싱클턴을 생성해야 한다.
싱글턴 패턴의 사용 이유
1) 고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다.
2) 싱글턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들의 데이터를 공유하기 쉽다.
싱글턴 패턴의 문제점
싱글턴 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유할 경우 다른 클래스의 인스턴스들 간의 결합도가 높아져 ‘개방-폐쇄 원칙’을 위배하게 된다. => 객체 지향 설계 원칙에 어긋남
따라서 수정이 어려워지고 테스트하기 어려워진다.
또한 멀티쓰레드 환경에서 동기화처리를 안하면 인스턴스가 두 개가 생성된다든지 하는 경우가 발생할 수 있음
'고급 JAVA' 카테고리의 다른 글
JAVA - Singleton (0) | 2020.10.08 |
---|---|
JAVA- MVC 회원관리 예제 (0) | 2020.10.07 |
JAVA-JDBC - 외부 properties (0) | 2020.09.29 |
JAVA -JDBC - JDBC를 이용한 데이터베이스 처리 순서 (0) | 2020.09.29 |
JAVA - InetAddress - IP주소 받아오는 예제 (0) | 2020.09.29 |