[Spring Boot] 일반적인 Java 개발 패턴 트레이닝

김현수·2024년 5월 25일
0

spring

목록 보기
7/9



Java 개발의 대표적인 개념

  • Static

    • 주로 메모리 관리에 사용

    • 변수, 메서드, 블록, 중첩 클래스에 적용 가능


    • Static Variables

      • 클래스의 모든 인스턴스에서 공유
    • public class Counter {
         public static int count = 0;
         public Counter() {
             count++;
         }
      }
    • Static Methods

      • 클래스의 인스턴스를 만들지 않고도 호출 가능
    • public class Utility {
         public static int add(int a, int b) {
             return a + b;
         }
      }
    • Static Blocks

      • 정적 변수를 초기화하는 데 사용
    • public class Example {
         static {
             System.out.println("Static block executed");
         }
      }

  • Singleton Pattern

    • 한 클래스에서 오직 하나의 객체를 보장
    • 전역에서 접근 가능
    • public class Singleton {
         private static Singleton instance;
         private Singleton() { }
         public static Singleton getInstance() {
             if (instance == null) {
                instance = new Singleton();
             }
             return instance;
         }
      }

  • MVC

    • Model - View - Controller
    • APP 을 세 개의 상호 연결된 구성요소로 분리하는
      UI 를 구현하기 위한 디자인 패턴

    • Model : 데이터와 비즈니스 로직 나타냄
    • View : 프레젠테이션 레이어(UI) 나타냄
    • Controller : Model 과 View 사이의 중개자 역할
      사용자 입력 처리하고 모델을 업데이트

  • MVVM

    • MVC를 확장한 아키텍처 패턴
    • 그래픽 사용자 인터페이스 개발과 비즈니스 로직
      또는 백엔드 로직(모델) 개발을 분리

    • Model : MVC 와 동일
    • View : MVC 와 동일
    • ViewModel : 공용 속성과 명령을 노출하는 View 의 추상화
      ViewModel 은 모델을 조작하고 View 에
      변경사항을 알림

  • 일반적인 Java 개발 패턴

    • Factory Pattern

      • 생성될 객체의 정확한 클래스 지정하지 않고 객체를 생성하는데 사용
      • public class ShapeFactory {
              public Shape getShape(String shapeType) {
                  if (shapeType == null) {
                      return null;
                  }
                  if (shapeType.equalsIgnoreCase("CIRCLE")) {
                      return new Circle();
                  } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
                      return new Rectangle();
                  }
                  return null;
              }
        }
    • Observer Pattern

      • 하나의 개체가 상태를 변경하면 모든 종속 항목에
        알림이 전송되도록 개체 간의 일대다 종속성을 정의

      • public interface Observer {
              void update();
        }
        public class Subject {
              private List<Observer> observers = new ArrayList<>();
        
              public void addObserver(Observer observer) {
                  observers.add(observer);
              }
        
              public void notifyAllObservers() {
                  for (Observer observer : observers) {
                      observer.update();
                  }     
              }
        }
    • Decorator Pattern

      • 동일한 클래스의 다른 개체의 동작에 영향을 주지 않고
        개별 개체에 동작을 동적으로 추가

      • public interface Car {
              void assemble();
        }
        public class BasicCar implements Car {
              @Override
              public void assemble() {
                  System.out.print("Basic Car.");
              }
        }
        public class CarDecorator implements Car {
              protected Car car;
        
              public CarDecorator(Car car) {
                  this.car = car;
              }
        
              @Override
              public void assemble() {
                  this.car.assemble();
              }
        }  
        public class SportsCar extends CarDecorator {
              public SportsCar(Car car) {
                  super(car);
              }
        
              @Override
              public void assemble() {
                  super.assemble();
                  System.out.print(" Adding features of Sports Car.");
              }
        }           
profile
일단 한다

0개의 댓글