CS 공부

[IT기술 면접] java 디자인 패턴 종류

미 성 2024. 3. 27. 01:07


안녕하세요 ! 오늘은 java에서의 디자인 패턴 종류들을
알아보겠습니다. 추상 팩토리, 팩토리 메소드,
싱글톤, 어뎁터, 뷰홀더, 옵저버, 빌더 패턴 ! 🥦
하나하나 뿌셔봅시다 ! ! 🌟🌟🌟

목차




디자인 패턴이란 무엇인가



소프트웨어에서 자주 발생하는 문제들에 대한
일반적인 해결책


 
추상 팩토리 패턴이란 ? 

- 관련된 객체 집합을 생성하는 인터페이스
  제공하는 패턴
- 일관된 방식으로 여러 객체 생성
구체적인 클래스에 의존하지 않고도 객체 생성이 가능
- 단점 : 새로운 종류의 제품 지원 한계

ex. GUI 구성 요소를 생성하는 추상 팩토리
 




싱글톤 패턴이란 ?

- 어디서든지 동일한 인스턴스에 접근 가능하도록 하는 패턴
- 어떤 클래스의 인스턴스가 오직 하나만 존재하도록
   보장하는 패턴
- 인스턴스에 접근할 수 있는 유일한 메소드 제공
( 보통 static )




 
빌더 패턴이란 ?

- 클라이언트가 복잡한 객체를 직접 생성하는 것이 아니라
  빌더를 통해 객체 생성
- 필요한 속성들만 설정하고 나머지 객체 생성 과정은 빌더에게 맡기기



 
팩토리 메소드 패턴이란 ?


- 객체 생성을 처리하는 메서드를 정의하고, 이를 서브클래스에서 구현하여 객체의 생성을 캡슐화하는 패턴
- 팩토리를 통해 인스턴스를 얻음으로서
   코드와의 결합도 낮춤
- 주요 구성 요소 : 생성자 메소드
( 객체를 생성하고 반환하는 책임 )
ex. 도형을 그려내는 도형 팩토리




 
추상 팩토리 vs 팩토리 메소드

: 객체의 캡슐화, 객체 생성의 유연성 향상

1. 추상 팩토리 : 관련 있는 여러 객체를 클래스에
의존하지 않고 만들기 위한 목적
2. 팩토리 메소드 : 구체적인 객체 생성 과정을
하위 클래스로 옮기는 것이 목적




 
 
옵저버 패턴이란 ?

- 객체 간의 일대 다 의존 관계를 정의하는 디자인 패턴
- 한 객체(subject)의 상태 변화에 대해 다수의 객체
(옵저버)가 자동으로 알림을 받도록 하는 패턴
- 객체 간의 느슨한 결합을 유지하면서도 상태 변화를 효과적으로 처리 가능




 
어뎁터 패턴이란 ?


- 기존의 코드를 수정하지 않고도 두 클래스 간의 호환성을 확보할 수 있게 해주는 패턴
- 다른 두 개의 시스템이 함께 작동할 수 있도록 해주는 것
ex. A 클래스에서 B 클래스에 있는 메소드를 쓰고 싶을 때, 어뎁터 클래스를 만들어서 B의 메소드를 A의 클래스도 사용할 수 있는 형태로 변환해 준다. 




 
뷰홀더 패턴이란 ?


- 안드로이드 프로그래밍에서 UI 성능 향상을 위해
  자주 사용
- 한 번 생성한 뷰는 재활용을 위해
   뷰홀더라는 객체에 저장됨.
- 생성된 뷰를 재활용하여 새로운 항목을 보여주는 방식