7-1. MVC 및 싱글턴패턴

zhyun·2020년 10월 5일
0

HighJava

목록 보기
54/67

1.싱글톤 패턴

  • ① 싱글톤 패턴이란?
    • 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고 (static)
      그 메모리의 인스턴스를 만들어 사용하는 패턴
    • 생성자가 여러차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환
    • 생성자에 접근제어자를 private로 선언해서 객체의 생성을 제한하고 메서드를 통해서만 객체를 취득할 수 있도록 한다.
  • 싱글톤 패턴 장점
    • 고정된 메모리 사용으로 new인스턴스를 사용하기 때문에 메모리 낭비를 막음
    • static(전역)인스턴스이기 때문에 다른 클래스에서 데이터를 공유하기 쉬움
  • 싱글톤 패턴 단점
    • 너무 많은 데이터를 공유할 경우 인스턴스들 간에 결합도가 높아져 수정이 어려워지고 테스트하기 어려워진다.
    • 멀티쓰레드 환경에서 동기화처리를 하지 않으면 인스턴스가 두 개가 생성되는
      경우 발생
  • 싱글톤 패턴 구현 방법
    • private생성자
    • static변수로 객체 생성
    • 객체의 getter 구현
  • ⑤ 싱글톤 패턴 예제
public class store{
    private static Store instance = new Store();
    
    private Store(){}
    
    public static Store getInstance(){
    	return instance;
    }
}

public class StoreTest{
    Store store1 = Store.getInstance();
    Store store2 = Store.getInstance();
    //Store store3 = new Store(); // 직접 생성 불가
    
    System.out.println(store1);
    System.out.println(store2);
}
  • Store클래스 내에서 Store타입의 static변수 instance를 선언해서 객체를 생성 -> 이 객체는 static메모리 영역에 할당되어 어플리케이션 전체에서 이 객체만 유일하게 사용
    • 생성자의 접근제어자를 private으로 했기 때문에 Store클래스 외부에서는 절대 호출 불가능
    • 외부에서 사용할 수 있도록 Store객체를 반환하는 static getter를 만듦
    • StoreTest클래스의 main메소드에서 Store인스턴스를 사용
      => new Store()와 같이 생성 불가능, Store의 getInstance()를 호출함으로써 Store인스턴스에 접근할 수 있다.
    • store1, store2 를 찍어보면 해시코드 값이 동일함
      => 두변수는 같은 인스턴스를 참조하고 있다.

2.MVC패턴

  • 객체지향프로그래밍에서 MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식 중 하나
  • 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식
  • Model, View, Controller의 약자로 User-View-Controller-Model-Controller-View User의 구조를 가지고 있다.
  • 데이터베이스나 제어프로그램의 변경 없이 시각적인 부분만 수정하려면 view
    데이터 처리부분만 수정 model, 프로그램간 연결과 제어를 수정하려면 Controller부분만 수정하면 되는 방식
  • MVC장점
    • 전형적인 어플리케이션 OOP구조 : 가장 단순하며 보편적으로 많이 사용텍스트
    • 맡은 일에만 집중할 수 있음, 효율성 증가, 유지보수 편리, 애플리케이션의 확장성과 유연성 늘어남, 중복코딩의 문제점 사라짐
    • 유저 인터페이스와 비지니스 로직 분리
  • MVC단점
    • View와 Model 사이의 의존성이 높다 -> 어플리케이션이 커질수록 복잡하고 유지보수 어려워짐

M(Model)

  • 애플리케이션의 정보(데이터)를 처리하는 컴포넌트
  • 처음 정의하는 상수, 초기화값, 변수등을 뜻함
  • 데이터베이스에 연결하고 데이터를 추출하거나 저장,삭제,업데이트,변환 등의 작업을 수행하는 역할

V(View)

  • View는 말그대로 화면에 표시되는 부분, 사용자가 보는 화면

C(Controller)

  • 사용자가 Controller에 작업을 요청하면 Controller는 Model을 호출하여 데이터를 처리하고 Model이 데이터를 처리한 결과를 View에 보내고 이 결과를 사용자가 보게 된다는 것
  • Model과 View를 이어주는 다리 역할, 모든 "이벤트"담당, 메인 로직을 담당
  • Model과 View내의 클래스들 간 정보 교환하는데 사용
profile
HI :)

0개의 댓글