첫째, 창작 모델:
1, 팩토리 메소드 모드 팩토리 메소드 모드는 팩토리 메소드 패턴에 문제가 있어 만들어집니다. 팩토리 메서드 모드에서 중간 클래스 작성은 팩토리 클래스에 따라 달라집니다. 프로그램을 확장하려면 공장 클래스를 수정해야 합니다. 이는 개방형 폐쇄 원칙에 위배됩니다. 따라서 공장 메서드 패턴이 나타납니다. 하나의 공장 인터페이스와 여러 공장 구현 클래스만 만들면 됩니다.
2. 추상 팩토리 추상 팩토리는 특정 클래스를 지정하지 않고도 일련의 관련 또는 상호 종속 객체를 만들 수 있는 인터페이스를 제공합니다. 공장 방법 모드와 달리 공장 방법 모드는 다양한 객체를 구현할 수 있는 공장을 만드는 것입니다. 추상 공장은 추상 공장 인터페이스를 제공하며, 여러 공장을 정의하며, 각 공장은 여러 객체를 생성할 수 있습니다.
3.singleton 모드 singleton 모드는 클래스에 인스턴스가 하나만 있는지 확인하고 전역 액세스 지점을 제공하여 액세스할 수 있도록 합니다. 또한 클래스 내부에 단일 객체를 작성하므로 권한을 설정하면 클래스 외부에 객체를 만들 수 없습니다. 단일 인스턴스 객체는 JVM 에 객체 인스턴스가 하나만 있음을 보장합니다.
4. 빌더 모드 (Builder mode) 빌더 모드는 복잡한 구조를 해당 표현에서 분리하여 동일한 구성 프로세스에서 다른 표현을 생성할 수 있도록 합니다. 프로그램에서 builder 를 통해 변경되지 않는 몇 가지 기본 구성요소를 결합하여 복잡한 오브젝트를 만들고 분리할 수 있습니다.
5. 프로토타입 모드: 프로토타입 모드 프로토타입 인스턴스에서 생성할 객체 유형을 지정하고 이러한 프로토타입을 복사하여 새 객체를 생성합니다. 실제로 객체의 복사본이 복사되어 호출자에게 반환됩니다. 객체는 Cloneable 을 상속하고 clone 메서드를 다시 작성해야 합니다. 프로토타입 모드의 아이디어는 한 오브젝트를 원형으로 복제해서 원본과 비슷한 새 오브젝트를 만드는 것입니다.
둘째, 구조 모델:
1, 어댑터 모드 어댑터 모드는 인터페이스 비호환성으로 인해 함께 작동하지 않는 클래스가 함께 작동할 수 있도록 하는 기능으로, 호환되지 않는 독립형 인터페이스 두 개를 연결하여 함께 작동할 수 있도록 하며 어댑터가 중개자 역할을 합니다.
2. 데코레이터 패턴: 데코레이터 모드는 개체에 추가 책임을 동적으로 추가하고, 개체에 새로운 기능을 추가하고, 데코레이션 개체와 데코레이션 개체가 동일한 인터페이스를 구현해야 하며, 데코레이션 개체는 데코레이션 개체의 인스턴스를 보유합니다. 동적으로 추가하는 것 외에도 동적으로 취소할 수 있습니다. 동적이려면 상속에 의존해서는 안 된다. 상속은 정적이기 때문이다.
3. 프록시 모드 프록시 모드는 다른 객체에 대한 액세스를 제어하는 프록시를 제공합니다. 즉, 클래스의 프록시 클래스를 만들고 프록시 클래스에 간접적으로 액세스하는 동안 해당 기능을 제어합니다.
4. 스킨 모드 스킨 모드는 하위 시스템의 인터페이스 세트에 일관된 인터페이스를 제공합니다. 외관 모드는 이 하위 시스템을 쉽게 사용할 수 있도록 고급 인터페이스를 정의합니다.
5. 브리지 모드 브리지 모드는 추상적인 부분과 구현 부분을 분리하여 둘 다 독립적으로 변경할 수 있도록 하는 것입니다. 브리징 모드는 특정 구현에서 사물을 분리하여 독립적으로 변경할 수 있도록 하는 것입니다 (갑자기 MVC 모드와 연관).
6. 결합 모드: 결합 모드는 객체를 트리 구조로 그룹화하여 부분-전체를 나타내는 계층입니다. 결합 모드를 사용하면 단일 객체와 결합된 객체를 일관되게 사용할 수 있습니다.
7. 메타패턴 즐기기: 메타패턴을 즐기는 것은 * * * 기술을 이용하여 대량의 세밀한 객체를 효과적으로 지원하는 것이다. 메타 공유 모드의 주요 목적은 객체의 * * * 공유, 즉 * * * 공유 풀을 구현하는 것입니다. 시스템에 많은 객체가 있는 경우 메모리 오버헤드를 줄이고 기존 유사 객체를 재사용할 수 있습니다. 일치하는 오브젝트를 찾을 수 없는 경우 새 오브젝트를 만들어 오브젝트 만들기를 줄이고 시스템 메모리를 줄이며 효율성을 높일 수 있습니다.
셋째, 행동 패턴:
1, 정책 모드:
정책 모델은 일련의 알고리즘을 정의하여 한 번에 하나씩 캡슐화하여 상호 교환할 수 있도록 하는 것입니다. 알고리즘의 변경은 알고리즘을 사용하는 고객에게 영향을 주지 않습니다.
2. 템플릿 방법 모드:
템플릿 메서드 모드는 한 번의 작업으로 알고리즘의 뼈대를 정의하고 일부 단계를 하위 클래스로 지연시키는 것입니다. 이 모드는 추상 클래스에 메인 메서드가 있고 1 ... main 개의 메서드를 정의합니다. 추상적이거나 실제 메서드일 수 있습니다. 클래스를 정의하고, 추상 클래스를 상속하고, 추상 메서드를 다시 작성하고, 추상 클래스를 호출하여 하위 클래스를 호출합니다.
템플릿 방법을 사용하면 하위 클래스가 알고리즘 구조를 변경하지 않고 알고리즘의 특정 단계를 재정의하고 일부 고정 단계와 고정 논리 방법을 템플릿 메서드에 캡슐화할 수 있습니다. 템플릿 메서드를 호출하여 이러한 특정 단계를 완료합니다.
관찰자 모드:
관찰자 모드는 정의된 객체 간의 일대다 종속성입니다. 한 객체의 상태가 변경되면 해당 객체에 종속된 모든 객체가 공지되고 자동으로 업데이트됩니다.
즉, 관찰자의 상태가 변경되면 모든 관찰자가 통지를 받게 됩니다. 이런 의존은 양방향이다. 일부 블로그를 탐색할 때 메일 구독 및 QQ 사서함의 RSS 가입에 RSS 아이콘이 표시되는 경우가 많습니다. 간단히 말해서, 이 문장 가입 후 후속 업데이트가 있을 경우 즉시 사용자에게 알립니다. 이 현상은 전형적인 관찰자 모델입니다.
4. 반복자 모드:
반복자 모드는 오브젝트의 내부 표현을 노출하지 않고 어셈블리 오브젝트의 요소에 순차적으로 액세스할 수 있는 방법을 제공합니다.
Java 에서 합산 클래스의 각 요소를 트래버스하는 동작이 분리되어 반복자로 캡슐화되고 반복자가 트래버스 작업을 처리합니다. 합산 클래스의 내부를 노출하지 않고 합산 클래스를 단순화합니다. 우리가 자주 사용하는 JDK 에서, 모든 클래스도 이러한 기본적인 것들이다.
5. 책임 체인 모드:
책임 체인 모드는 요청 발신자와 수신자의 결합을 피하기 위해 여러 객체가 요청을 받고, 객체를 체인으로 연결하고, 객체가 처리할 때까지 이 체인을 따라 요청을 전달합니다. 여러 객체가 있으며 각 객체는 다음 객체에 대한 참조를 보유하여 하나의 객체가 요청을 처리하기로 결정할 때까지 이 체인을 따라 요청을 전달하는 체인을 형성합니다.
6, 명령 모드:
명령 모드는 요청을 객체로 캡슐화하여 발신자가 다른 요청으로 고객을 매개변수화할 수 있도록 하는 것입니다. 세 가지 객체가 있습니다. 호출자, 수신자 및 명령은 요청과 실행을 분리합니다. 호출자는 실행할 명령을 선택하고 명령은 수신자를 지정합니다.
7. 기념품 패턴:
Memento 모드는 패키지를 손상시키지 않고 오브젝트의 내부 상태를 캡처하여 오브젝트 외부에 저장합니다. 원래 클래스의 정보를 저장할 memo 클래스를 만듭니다. 또한 memo 클래스를 저장할 memo warehouse 클래스를 만듭니다. 주요 목적은 적절한 경우 개체를 복원할 수 있도록 개체의 상태를 저장하는 것입니다. 즉, 백업할 수 있습니다.
8. 상태 모드:
상태 모드를 사용하면 내부 상태가 변경될 때 오브젝트의 동작을 변경할 수 있습니다. 오브젝트에는 여러 가지 상태가 있으며 각 상태에는 특정 동작이 있습니다.
9. 방문자 모드:
방문자 모드는 주로 데이터 구조와 데이터 작업을 분리하는 것입니다. 액세스한 클래스에 방문자를 받기 위한 인터페이스를 추가하고, 지저분한 작업을 캡슐화하고, 액세스된 구조의 디커플링 구조와 알고리즘을 캡슐화하며, 확장성이 뛰어납니다. 일반적으로 객체 데이터의 구조와 동작을 분리하는 방법입니다.
10, 중개 모드:
중개 모드는 하나의 중개 객체로 일련의 객체 상호 작용을 캡슐화하는 것이다. Mediator 를 사용하면 객체를 명시적으로 상호 참조할 필요가 없으므로 커플링이 느슨해지고 상호 작용이 독립적으로 변경됩니다.
1 1, 인터프리터 모드:
인터프리터 모드는 언어를 제공하고, 구문 표현을 정의하고, 인터프리터를 정의하는 것입니다. 이 해석기는 이 로고를 사용하여 언어의 문장을 해석하는데, 기본적으로 이 범위에 사용되며, 적용면이 비교적 좁다. 예를 들면 정규식의 해석과 같다.
확장 데이터:
소프트웨어 설계의 개념과 중요성;
소프트웨어 설계 모델은 소프트웨어 설계 경험을 요약한 것으로, 소프트웨어 설계에서 반복되는 설계 문제에 대한 성공적인 솔루션에 대한 설명입니다. 이러한 성공적인 설계 경험을 문서화하기 위해 나중에 사용하기 쉽도록 소프트웨어 설계 모드에는 일반적으로 스키마 이름, 문제, 솔루션 및 효과의 네 가지 기본 요소가 포함되어 있습니다.
패턴 이름은 실제로 기억에 도움이 되는 이름이며 소프트웨어 설계에 사용되는 기술 용어로 디자이너 간의 의사 소통에 도움이 됩니다.
문제는 디자이너가 직면 한 디자인 시나리오를 설명하고 디자이너에게 패턴을 사용할 시기를 알려줍니다.
솔루션은 설계의 세부 사항을 설명하며 일반적으로 솔루션의 구조도 (예: UML 클래스 다이어그램, 시퀀스 다이어그램 등) 를 제공합니다. , 또는 다이어그램) 및 관련 텍스트 설명, 가능한 경우 솔루션을 더 잘 이해할 수 있도록 코드 예제가 제공됩니다.
효과는 설계 계획의 장단점을 설명합니다. 이러한 영향은 일반적으로 소프트웨어의 품질 속성 (예: 확장성 및 재사용 가능성) 을 대상으로 합니다.
소프트웨어 설계 패턴의 의미는 설계 재사용에 있습니다. 디자인 패턴을 사용하면 설계자가 설계를 반복하는 데 시간을 들이지 않고도 성공적으로 입증된 설계 시나리오를 쉽게 참고하거나 직접 사용할 수 있습니다. 일부 디자인 패턴은 디자인 문서 및 소프트웨어 개발을 직접 지원하기 위해 클래스 다이어그램 설계 및 코드 예제를 보여 주기도 합니다.