22.03.21 - 22.03.25 WIL 정리

Seunghan·2022년 3월 26일
0

Java

목록 보기
1/6

디자인 패턴

디자인 패턴은 각각의 쓰임새를 잘 이해해놓고 비슷한 상황이 나오면 한번씩 써먹어 보도록 하자!

Factory Method Pattern

생성 디자인 패턴

부모 클래스에서 객체를 생성하는 인터페이스를 제공한다.
장점

  • 생성의 책임을 한 곳으로 옮김으로 SRP를 잘 지키도록 함
  • 기존에 존재하는 코드를 변경하지 않고 새로운 코드를 작성한 뒤 부모클래스에 생성의 책임을 추가하면 되므로 OCP 또한 잘 지켜지는 것을 알 수 있다.
  • 생성부분과 구현체 간의 강한 결합을 피할 수 있다.

적용 가능한 상황

  • 코드와 연관이 깊은 정확한 타입과 연고나관계, 의존관계를 사전에 모르는 경우(기존의 코드와 상관없이 product를 확장하는데 유리)
  • 매번 비즈니스 로직을 다시 짜는 것 때신 기존에 존재하는 object들을 재사용함으로써 시스템 리소스를 아끼고 싶을 때
  • 라이브러리 또는 프레임워크의 사용자에게 내부 구성요소를 확장하는 방법을 제공하고 싶을 때

Abstract Factory Pattern

생성 디자인 패턴 - Factory Method에서 확장된 느낌인것 같다(내생각엔?)

구체적인 자식 클래스 명시 없이 연관된 객체 그룹을 생성하게 한다. 사실 와닿진 않는다. 나중에 예시를 찾아봐야겠다.

장점

  • 하나의 팩토리에서 반환된 상품들을 서로 호환
  • client code와 product의 여러가지 버전이 서로 독립적이다.
  • Factory Method 패턴과 마찬가지로 SRP와 OCP를 지킬수 있게 된다,

단점

  • 버전이 너무 많아지면 상품의 자식 클래스들과 인터페이스가 많아지면서 코드의 복잡성을 증가시킨다.

적용 가능한 상황

  • 여러 버전의 연관 상품을 다뤄야하지만 최대한 독립적이고 싶을 떄
  • 어떻게 될 지 몰라서 미래의 확장성을 고려학 싶을 때

Singleton Pattern

생성 디자인 패턴

클래스가 하나의 인스턴스만 갖게 함으로써 여러가지 장점을 가질 수 있게된다
하지만 순수 자바로 구현하면 단점이 많다. But 스프링에서 알아서 제공해주므로 고맙게 사용하자!

장단점은 생략!

싱글톤 구현 방식은 Bill Pugh 방식이 유명하다고 한다.(Thread-safe 하다고 한다)
자세한 것은 여기 참고!
Okky Bill Bugh

추가로 enum으로도 싱글톤을 만들 수 있으니 고려하자!

Builder Pattern

생성 디자인 패턴

선택적 매개변수가 많은 경우! 아주 유용하게 사용할 수 있다.
또한 빌더패턴은 생성할 때 가독성이 좋아서 좋다. (+ 메서드 체이닝 방식)

쉬워서 설명 패스!

Strategy Pattern

행위 디자인 패턴

행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
전략(비즈니스 로직, 알고리즘)을 쉽게 바꿀 수 있도록 해주는 디자인 패턴

장점

  • 런타임에 전략을 바꿀 수 있다.
  • 전략을 사용하는 코드와 전략을 구현하는 세부 기능을 분리할 수 있다

단잠

  • 전략의 종류가 적고 전략이 잘 변하지 않는 경우 코드를 더 복잡하게 만든다.

Proxy Pattern

구조 디자인 패턴

실제 기능을 수행하는 객체(Real Object) 대신 가상의 객체(Proxy Object)를 사용해 로직의 흐름을 제어하는 디자인 패턴

프록시 패턴을 적용 가능한 부분

  • 가상 프록시(느린 초기화)
  • 보호 프록시(접근 제어)
  • 캐싱 프록시(캐싱 요청 결과)

회고 - 프록시 패턴은 타켓 객체에 접근에 대해 사전처리와 사후처리가 필요할 때 사용하는 게 좋겠다. 나중에 써먹어봐야지!

Factory Method, Abstract Factory 패턴 정리
Singleton 패턴 정리
Builder 패턴 정리
Strategy 패턴 정리
Proxy 패턴 정리

profile
주니어 백엔드 개발자입니다!

0개의 댓글

관련 채용 정보