본문 바로가기
Back-End/Spring Boot

예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해

by newny 2023. 4. 18.
반응형

어댑터 패턴(Adapter pattern)

  • 한 클래스의 인터페이스를 클라이언트에서 사용하고자 다른 인터페이스로 변환하는 패턴
  • 서로 관계없는 인터페이스들을 함께 사용할 수 있게 하는 패턴
  • 호출당하는 쪽의 메소드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴
  • 자바 코어 라이브러리의 몇가지 표준 어댑터 예시
    • java.io.InputStreamReader(InputStream)
    • java.io.OutputStreamWriter(OutputStream)

예) 둥근 구멍들에 정사각형 못들을 맞추기

→ 둥근 구멍, 정사각형 못, 정사각형 못을 둥근 구멍에 맞춰주는 어댑터, 클라이언트 사용 코드 등이 필요함

프록시 패턴(Proxy Pattern)

  • 프록시 : 대리자, 대변인이라는 뜻
  • 대리자를 사용하여 호출
  • 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴
  • 개방 폐쇄 원칙과 의존 역전 원칙이 적용된 설계 패턴
  • 프록시 패턴의 중요 포인트
    • 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다.
    • 대리자는 실제 서비스에 대한 참조 변수를 갖는다(합성).
    • 대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 그대로 클라이언트에게 돌려준다.
    • 대리자는 실제 서비스의 메소드 호출 전후에 별도의 로직을 수행할 수 있다.

데코레이터 패턴(Decorator Pattern)

  • 반환값에 장식을 더한다는 것을 빼면 프록시 패턴과 동일
  • 메소드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴

싱글톤 패턴(Singleton Pattern)

클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴

  • new를 실행할 수 없도록 생성자에 private 접근제어자를 지정한다.
  • 유일한 단일 객체를 참조할 정적 참조 변수가 필요하다.
  • 유일한 단일 객체를 반환할 수 있는 정적 메소드가 필요하다.
  • 단일 객체인 경우 결국 공유 객체로 사용되기 때문에 속성을 갖지않게 하는것이 정석이다.
반응형

댓글