[F-Lab 챌린지 21일차] 개구리책 6장 - 디자인 패턴

성수데브리·2023년 7월 19일
0

f-lab_java

목록 보기
18/73

학습 목표


  • 개구리책 5장 ~

학습 결과 요약


  • 스프링 프레임워크는 스프링 프레임워크 - 객체 지향의 특성과 설계 원칙을 극한까지 적용한 OOP 프레임워크다. 즉 자바의 객체지향 특성, 원칙, 디자인패턴을 알지 못하면 깊이 이해할 수 없다.

학습 내용


객체지향 4개 특징 - 도구

객체지향 원칙 SOLID - 도구 사용 방법

디자인 패턴 - 레시피 / 객체 지향 특성과 설계 원칙을 기반으로 구현돼 있다.

스프링 프레임워크 - 객체 지향의 특성과 설계 원칙을 극한까지 적용한 OOP 프레임워크

디자인 패턴

어댑터 패턴

  • Adapter 란 변환기를 뜻한다.
  • 어댑터는 하나의 인터페이스를 다른 인터페이스로 변환하는 역할

프록시 패턴

  • 프록시는 대리자, 대변인을 뜻한다.
  • 누군가를 대신해 그 역할을 수행하는 존재를 말한다.
  • 클라이언트 쪽에서는 실제 객체를 호출한건 지, 대리자 객체를 통해 호출한 건지 전혀 모르게 처리할 수 있다.
  • 프록시 패턴의 목적은 제어의 흐름을 변경하거나 다른 로직을 수행하기 위해 사용한다.

데코레이터 패턴

  • 데코레이터는 도장/도배업자를 의미한다.
  • 데코레이터 패턴은 원본에 장식을 더하는 패턴이다.
  • 프록시 패턴과 구현 방법이 같지만 차이점은 클라이언트가 받는 반환값에 장식을 덧 입힌다.

싱글톤 패턴

  • 인스턴스를 하나만 만들어 사용하기 위한 패턴이다.
  • 커넥션 풀, 스레드 풀 등과 같은 경우 인스턴스를 여러개 만들게 되면 불필요한 자원을 사원하게 되는데 싱글턴 패턴을 사용하면 오직 하나의 인스턴스만 만들고 재사용 가능하다.
  • 싱글톤 객체는 공유 객체로 사용되기 때문에 속성을 갖지 않게 해야 한다.
    다만, 읽기 전용 속성을 갖는 것은 문제가 되지 않는다.

템플릿 메서드 패턴

  • 상위 클래스에 공통 로직을 수행하는 템플릿 메서드와 하위 클래스에 오버라이딩을 강제하는 추상 메서드 또는 선택적으로 오버라이딩할 수 있는 훅 메서드를 두는 패턴을 템플릿 메서드 패턴이라고 한다.

팩터리 메서드 패턴

  • 팩터리 메서드는 객체를 생성 반환하는 메서드를 말한다.
  • 패턴이 붙으면 하위 클래스에서 팩터리 메서드를 오버라이딩해서 객체를 반환하게 하는 것을 의미한다.

전략 패턴

  • 구성 요소
    1. 전략 메서드를 가진 전략 객체
    2. 전략 객체를 사용하는 컨텍스트
    3. 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트
  • 전략을 다양하게 변경하면서 컨텍스트를 실행할 수 있다.
  • 전략을 익명 내부 클래스로 구현한 전략 패턴

템플릿 콜백 패턴 & 리팩토링된 템플릿 콜백 패턴

  • 전략 패턴의 변형으로 DI 에서 사용하는 특별한 형태의 전략이다.
  • 전략 패턴과 모든 것이 동일한데 전략을 익명 내부 클래스로 정의해서 사용한다

스프링을 이해하고 활용하기 위해선 전략 패턴, 템플릿 콜백 패턴, 리팩터링된 템플릿 콜백 패턴을 잘 기억해야 한다.

스프링 프레임워크

  • 스프링을 이해하려면 POJO 를 기반으로 IcC/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다.

의존성이란 ?

  • 자바에서 의존성이란 전체가 부분에 의존한다고 표현할 수 있다. -> new 로 표현된다.
  • 의존성 주입 방법
    1. 생성자
    2. 속성
    3. XML 파일
    4. XML 파일에서 속성 주입
    1. @Autowired, @Resource

AOP

  • DI가 의존성에 대한 주입이라면 AOP는 로직의 주입이라고 할 수 있다.

PSA - 일관성 있는 서비스 추상화

  • 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것을 서비스 추상화라 한다.

0개의 댓글