디자인 패턴 소개


디자인 패턴은 모범 사례를 나타내며 숙련된 객체 지향 소프트웨어 개발자가 일반적으로 사용합니다. 디자인 패턴은 소프트웨어 개발 과정에서 소프트웨어 개발자가 직면하는 일반적인 문제에 대한 솔루션입니다. 이러한 솔루션은 수많은 소프트웨어 개발자가 오랜 기간 동안 시행착오를 거쳐 탄생한 결과입니다.

디자인 패턴은 대부분의 사람들에게 알려져 있고 반복적으로 사용되는 분류되고 목록화된 코드 디자인 경험의 집합입니다. 디자인 패턴을 사용하는 목적은 코드를 재사용하고, 다른 사람이 코드를 더 쉽게 이해할 수 있도록 하며, 코드 신뢰성을 보장하는 것입니다. 디자인 패턴이 우리 자신과 다른 사람, 그리고 시스템 모두에게 윈윈(win-win)이라는 것은 의심의 여지가 없습니다. 디자인 패턴은 건물의 벽돌과 마찬가지로 소프트웨어 엔지니어링의 초석입니다. 프로젝트에서 디자인 패턴을 합리적으로 사용하면 많은 문제를 완벽하게 해결할 수 있습니다. 각 패턴에는 실제로 그에 상응하는 원칙이 있으며, 각 패턴은 우리 주변에서 계속해서 반복되는 문제와 문제에 대한 해결책을 설명합니다. 패턴을 널리 사용할 수 있습니다.

GOF(갱오브포)란?

1994년 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides는 Design Patterns - Elements of Reusable Object-Oriented Software(중국어 번역: Design Patterns - Reusable Object-Oriented)라는 책을 공동 집필했습니다. 소프트웨어 요소) 소프트웨어 개발에서 디자인 패턴의 개념을 처음으로 언급한 책.

네 명의 작가를 통칭하여 GOF(Gang of Four)로 통칭합니다. 그들이 제안한 디자인 패턴은 주로 다음과 같은 객체지향 디자인 원칙을 기반으로 합니다.

  • 구현보다는 인터페이스에 맞춰 프로그래밍하세요.

  • 상속보다 객체 구성을 선호합니다.

디자인 패턴의 용도

소프트웨어 개발에서 디자인 패턴의 두 가지 주요 용도.

개발자를 위한 공통 플랫폼

디자인 패턴은 특정 시나리오에 특정한 표준 용어 시스템을 제공합니다. 예를 들어, 싱글턴 디자인 패턴은 싱글턴 디자인 패턴에 익숙한 모든 개발자가 단일 객체를 사용할 수 있고, 프로그램이 싱글턴 패턴을 사용한다는 것을 서로에게 알릴 수 있도록 단일 객체를 사용하는 것을 의미합니다.

모범 사례

디자인 패턴은 오랜 기간에 걸쳐 개발되었으며 소프트웨어 개발 중에 직면하는 일반적인 문제에 대한 최상의 솔루션을 제공합니다. 이러한 패턴을 배우면 경험이 부족한 개발자가 빠르고 쉬운 방법으로 소프트웨어 설계를 배울 수 있습니다.

디자인 패턴의 종류

디자인 패턴 참고서에 따르면디자인 패턴 - 재사용 가능한 객체 지향 소프트웨어 요소(중국어 번역: 디자인 패턴 - 재사용 가능한 객체 지향 소프트웨어 요소) ) 에서 언급한 디자인 패턴은 총 23가지입니다. 이러한 패턴은 생성 패턴, 구조적 패턴, 행동 패턴의 세 가지 주요 범주로 나눌 수 있습니다. 물론 디자인 패턴의 또 다른 범주인 J2EE 디자인 패턴에 대해서도 논의할 것입니다.

일련번호모드 및 설명포함
1생성 패턴
이러한 디자인 패턴은 새 연산자를 사용하여 객체를 직접 인스턴스화하는 대신 객체를 생성하는 동안 생성 논리를 숨기는 방법을 제공합니다. 이는 주어진 인스턴스에 대해 어떤 객체를 생성해야 하는지 결정하는 데 있어서 프로그램을 더욱 유연하게 만듭니다.
  • 팩토리 패턴

  • 추상 팩토리 패턴

  • 싱글턴 패턴

  • 빌더 패턴

  • 프로토타입 패턴

2구조적 패턴
이 디자인 패턴은 클래스와 객체의 조합에 중점을 둡니다. 상속 개념은 인터페이스를 구성하고 구성된 객체가 새로운 기능을 획득하는 방식을 정의하는 데 사용됩니다.
  • 어댑터 패턴

  • 브리지 패턴

  • 필터 패턴(필터, 기준 패턴) )

  • 복합 패턴(Composite Pattern)

  • 데코레이터 패턴(Decorator Pattern)

  • Facade 패턴

  • 플라이웨이트 패턴

  • 프록시 패턴 패턴)

3행동 패턴
이러한 디자인 패턴은 객체 간의 관계 통신에 특히 중점을 둡니다.
  • 책임 사슬 패턴

  • 명령 패턴

  • 통역사 패턴

  • 반복자 패턴

  • 중재자 패턴

  • 메멘토 패턴

  • 관찰자 패턴

  • 상태 패턴(State Pattern)

  • Null 객체 패턴(Null Object Pattern)

  • 전략 패턴(Strategy Pattern)

  • 템플릿 패턴

  • 방문자 패턴

4J2EE 패턴
이러한 디자인 패턴은 특히 프레젠테이션 계층에 중점을 둡니다. 이러한 모드는 Sun Java Center에서 인증되었습니다.
  • MVC 패턴

  • 비즈니스 위임 패턴

  • 복합 엔터티 패턴

  • 데이터 액세스 개체 패턴

  • 프런트 엔드 컨트롤러 패턴( Front Controller Pattern)

  • 차단 필터 패턴

  • 서비스 로케이터 패턴

  • 객체 패턴 전송

다음은 디자인 패턴 간의 전반적인 관계를 그림을 사용하여 설명합니다.

the-relationship-between-design-patterns.jpg

디자인 패턴의 6가지 원칙

1. 열기 폐쇄 원칙

개방 폐쇄 원칙은 확장에는 개방, 수정에는 폐쇄를 의미합니다. 프로그램을 확장해야 할 때 원본 코드를 수정하여 핫스왑 효과를 얻을 수 없습니다. 간단히 말해서 프로그램을 확장 가능하고 유지 관리 및 업그레이드하기 쉽게 만드는 것입니다. 이 효과를 얻으려면 나중에 특정 디자인에서 언급할 인터페이스와 추상 클래스를 사용해야 합니다.

2. 리스코프 대체 원리

리스코프 대체 원리는 객체지향 디자인의 기본 원칙 중 하나입니다. Liskov 대체 원칙은 기본 클래스가 나타날 수 있는 모든 곳에 하위 클래스가 나타날 수 있다고 말합니다. LSP는 상속 재사용의 초석입니다. 파생 클래스가 기본 클래스를 대체할 수 있고 소프트웨어 단위의 기능에 영향을 미치지 않는 경우에만 기본 클래스를 재사용할 수 있으며 파생 클래스도 이를 기반으로 새 클래스를 추가할 수 있습니다. 기본 클래스. 리스코프 대체 원칙은 개시 및 폐쇄 원칙을 보완한 것입니다. 열고 닫는 원리를 실현하기 위한 핵심 단계는 추상화이며, 기본 클래스와 하위 클래스 간의 상속 관계는 추상화의 구체적인 구현이므로 Liskov 대체 원칙은 추상화를 달성하기 위한 구체적인 단계에 대한 사양입니다.

3. 의존성 역전 원칙

이 원칙은 열기 및 닫기 원칙의 기초입니다. 구체적인 내용: 인터페이스 프로그래밍의 경우 의존하기보다는 추상화에 의존합니다. 세부 사항.

4. 인터페이스 분리 원칙

이 원칙은 단일 인터페이스를 사용하는 것보다 여러 개의 격리된 인터페이스를 사용하는 것이 더 낫다는 것을 의미합니다. 또한 클래스 간의 결합을 줄이는 또 다른 의미도 있습니다. 디자인 패턴은 실제로 대규모 소프트웨어 아키텍처에서 시작하여 업그레이드 및 유지 관리가 쉬운 소프트웨어 디자인 아이디어임을 알 수 있습니다. 종속성을 줄이고 결합을 줄이는 것을 강조합니다.

5. 데메테르 원리라고도 알려진 데메테르의 법칙

가장 잘 알려지지 않은 원칙은 개체가 다른 개체와 가능한 한 적게 상호 작용해야 함을 의미합니다. , 시스템 기능 모듈을 상대적으로 독립적으로 만듭니다.

6. 복합 재사용 원칙

복합 재사용 원칙은 상속 대신 합성/집계를 사용하는 것을 의미합니다.