이 장과 다음 장을 읽기 전에 전제 조건:
- 컴퓨터 프로그래밍에 대한 지식이 필요합니다.
- 객체 지향 개념에 대한 이해가 필요합니다.
"디자인 패턴을 이해하고 구현하면 소프트웨어 개발 프로세스가 크게 향상됩니다."
시작하자. 제목에서 알 수 있듯이 이것은 우리가 알고 있든 없든 소프트웨어 프로그래머가 일반적으로 사용하는 주요 디자인 패턴을 간략하게 소개하는 것을 목표로 합니다.
이러한 디자인 패턴은 세 가지 주요 범주로 분류할 수 있지만 널리 사용되는 추가 범주도 있습니다. 주요 범주는 다음과 같습니다.
- 창조 패턴
- 구조적 패턴
- 행동 패턴
이 외에도 다음과 같이 개발자가 일반적으로 사용하는 다른 범주도 있습니다.
- 아키텍처 패턴
- 동시성 패턴
패턴 대 주요 초점 영역
창조 패턴
먼저 "창조"라는 용어를 이해합시다. 지금까지 나와 함께 있습니까?
대!
생성 패턴은 주로 객체 생성을 중심으로 이루어집니다. 클래스 객체를 만드는 방법과 쉽게 적응하고 확장할 수 있는 방법에 대한 지침을 제공합니다.
생성 패턴은 소프트웨어에서 개체를 효율적으로 생성할 수 있는 다양한 기술과 접근 방식을 제공합니다.
"인형, 자동차, 테디베어와 같은 다양한 종류의 장난감을 생산하는 장난감 제조 공장이 있다고 상상해 보십시오.
각 유형의 장난감이 장난감을 형성하는 금형이라고 생각하십시오. 장난감을 효과적으로 관리하고 만들려면 제공된 입력을 기반으로 각 Mold 개체를 선택하기 위해 장난감 제조 기계에 일부 입력을 전달하여 특정 개체를 만들어야 합니다.
이 객체 생성 목적을 위해 우리는 이 창조 패턴이 필요합니다."
창조 패턴 원칙을 고수하는 몇 가지 기술/패턴이 있습니다. 주목할만한 것들 중 일부는 다음과 같습니다.
- 싱글톤 패턴
- 팩토리 패턴
- 추상 팩토리 패턴
따라서 우리가 작성하는 특정 코드 조각이 객체를 만들려고 할 때마다 생성 패턴을 따릅니다.
구조적 패턴
구조적 패턴은 더 큰 그림을 만들기 위해 퍼즐 조각을 조립하는 것처럼 소프트웨어 시스템의 다양한 구성 요소를 구성하고 연결하는 데 도움이 됩니다.
"컴퓨터의 디지털 도서관에 정리하고 전시하고 싶은 실제 책 모음이 있다고 상상해 보십시오. 그러나 디지털 도서관 소프트웨어는 PDF와 같은 특정 파일 형식의 전자책만 허용합니다.
이를 극복하기 위해 구조적 패턴은 실제 책과 디지털 도서관 사이의 다리 역할을 합니다. 실제 책 형식을 필요한 디지털 형식으로 변환하여 디지털 라이브러리에 원활하게 통합할 수 있습니다.
이 경우 물리적 책과 디지털 책 사이의 격차를 해소하기 위해 구조적 패턴이 필요합니다."
구조 패턴 지침을 따르는 알려진 패턴 중 일부는 다음과 같습니다.
- 어댑터 패턴
- 데코레이터 패턴
- 프록시 패턴
이러한 패턴을 따르면 견고한 구조를 유지하면서 이해하기 쉽고, 수정하고, 확장할 수 있는 소프트웨어를 구축할 수 있습니다.
행동 패턴
이 패턴은 서로 다른 객체가 서로 통신하고, 협업하고, 조정하는 방법에 대한 청사진을 제공합니다.
또한 특정 동작을 별도의 객체로 캡슐화하여 코드를 보다 모듈화하고 재사용할 수 있도록 하는 데 도움이 됩니다.
"온라인 쇼핑 애플리케이션에서 사용자는 신용 카드, PayPal 또는 대금 상환과 같은 다양한 지불 방법을 선택할 수 있습니다. 각 결제 방법에는 결제 처리를 위한 고유한 동작과 로직이 있습니다.
여기서 주요 개념은 사용자가 결제를 하는 것이지만 결제 방식은 사용자 선택에 따라 다릅니다.
지불 모드에 따라 개체를 만들고 각 입력을 전달하여 지불해야 합니다.
이 문제를 해결하기 위해 행동 패턴을 사용할 수 있습니다.
알려진 행동 패턴 중 일부는 다음과 같습니다.
- 관찰자 패턴
- 전략 패턴
- 명령 패턴
이 행동 패턴을 구현함으로써 우리는 쉽게 이해하고 유지 관리 및 수정할 수 있는 시스템을 설계할 수 있습니다.
다음 장에서 알려진 모든 패턴과 아키텍처 패턴 및 동시성 패턴과 같은 추가 패턴에 대해 논의해 보겠습니다.
'프로그래밍' 카테고리의 다른 글
프로그래밍 「 자바스크립트 편」단순화 3 React 핵심 개념 (구성 요소, 소품 및 상태) (0) | 2023.06.17 |
---|---|
프로그래밍 「 추천 편」Ubuntu 22.04에서 유선 연결이 누락되었을 때 (0) | 2023.06.15 |
프로그래밍 「 추천 편」IP 주소는 어떻게 작동합니까? (0) | 2023.06.13 |
프로그래밍 「 전문 편」VS Code용 다국어 온라인 컴파일러 작성 1부: 아키텍처 (0) | 2023.06.11 |
프로그래밍 「 추천 편」5가지 최고의 개발자의 일상 관행 (0) | 2023.06.11 |