728x90
반응형

🎯 개발자라면 꼭 알아야 할 디자인 패턴! MVC란?

**MVC(Model-View-Controller)**는 소프트웨어 개발에서 **관심사의 분리(Separation of Concerns)**를 구현하는 대표적인 디자인 패턴입니다.

  • 비즈니스 로직과 화면, 입력 제어를 독립적으로 구성할 수 있어 유지보수성이 매우 뛰어납니다.

📌 MVC 구성 요소

🔹 Model (모델)

  • 앱이 다뤄야 할 데이터비즈니스 로직을 담당합니다.
  • 데이터가 변경되면 일반적으로 뷰(View)와 컨트롤러(Controller)에 알려줍니다.
  • ✅ 예: 품목 이름, 가격, 수량 등 쇼핑 리스트의 항목 데이터

🔹 View (뷰)

  • 사용자에게 보여지는 UI를 담당합니다.
  • 데이터를 직접 처리하지 않고, 모델에서 전달받은 데이터만 표시합니다.
  • ✅ 예: 쇼핑 항목 리스트를 표 형태로 보여주는 HTML 화면

🔹 Controller (컨트롤러)

  • 사용자의 **입력(클릭, 요청 등)**을 받아,
    적절한 모델을 호출하고 뷰를 갱신하는 역할을 합니다.
  • ✅ 예: "장바구니에 담기" 버튼 클릭 → 컨트롤러가 해당 품목을 모델에 추가하고, 뷰를 새로고침

🛒 MVC 예제 - 쇼핑 리스트 앱

쇼핑리스트 앱을 예로 들면 다음과 같이 MVC로 나눌 수 있어요.

역할설명
Model itemName, price, quantity 등의 데이터를 정의
View 리스트 형태로 화면에 항목을 보여주는 레이아웃
Controller 사용자의 입력을 받아 모델 업데이트 및 뷰 갱신
 

✅ MVC 패턴의 장점

  • 🔧 유지보수가 쉬움: 각 구성 요소가 독립적이라 변경이 용이
  • 🧩 협업에 유리: 역할 분리가 명확해 프론트/백엔드 개발자 협업에 이상적
  • 🚀 재사용성과 확장성 증가
MVC패턴, 디자인패턴, 모델뷰컨트롤러, Model View Controller, 백엔드기초, 소프트웨어아키텍처, 쇼핑리스트예제, Java MVC, Spring MVC, 웹개발패턴
728x90
반응형
728x90
반응형

✔️ 싱글톤이란?

싱글톤(Singleton) 패턴은 클래스의 인스턴스를 단 하나만 생성하도록 보장하는 디자인 패턴입니다.
객체가 계속해서 생성되는 것처럼 보여도, 실제로는 최초에 생성된 하나의 인스턴스만을 반환합니다.

💡 싱글톤 구현 예제 (Lazy Initialization 방식)

public class Singletone {

    private static Singletone singletone;

    // 생성자를 private으로 막아 외부에서 new로 생성 불가
    private Singletone() {}

    public static Singletone getInstance() {
        if (singletone == null) {
            singletone = new Singletone();
        }
        return singletone;
    }
}

📌 핵심 포인트:

  • private static 으로 클래스 내부에 단 하나의 인스턴스를 보관
  • 외부에서 new Singletone() 호출 불가능 (생성자 private)
  • getInstance() 메서드를 통해서만 인스턴스에 접근 가능
  • 필요할 때만 초기화하는 지연 초기화(Lazy Initialization) 방식 사용

⚠️ 싱글톤 패턴 사용 시 주의사항

  1. 객체를 2개 이상 생성하지 않도록 철저히 차단해야 함
    • 생성자를 private으로 감춰야 함
  2. 상태를 유지하지 않는 Stateless 설계가 중요
    • 필드를 통해 상태를 가지면 여러 사용자 간 충돌 위험
    • 예: 웹 애플리케이션에서 사용자별 데이터를 필드로 저장하면 큰일 남 😱
  3. Spring을 사용한다면 걱정할 필요 없음
    • 기본적으로 모든 Bean은 싱글톤 범위로 관리됨
    • @Component, @Service, @Repository 등 사용 시 자동 적용
  4. 공유되지 않는 데이터는 지역 변수 또는 ThreadLocal 사용
    • 예: 사용자 요청에 따른 데이터를 처리할 때는 필드 대신 메서드 파라미터 사용

🧠 결론

  • 싱글톤은 자원을 절약하고, 전역적으로 동일한 인스턴스를 공유할 수 있어 유용합니다.
  • 그러나 잘못 사용할 경우 상태 공유로 인한 오류 발생 가능성이 있으므로, Stateless 설계를 철저히 해야 합니다.
  • Spring에서는 기본이 싱글톤이지만, 상태 관리만 잘 하면 안전하게 사용 가능!
728x90
반응형

+ Recent posts