> Java > java지도 시간 > Java의 23가지 디자인 패턴과 6가지 주요 디자인 패턴 원칙 개요

Java의 23가지 디자인 패턴과 6가지 주요 디자인 패턴 원칙 개요

php是最好的语言
풀어 주다: 2018-08-06 11:15:55
원래의
1868명이 탐색했습니다.

Java의 23가지 디자인 패턴 분석

1. 디자인 패턴 개요

일반적으로 디자인 패턴은 세 가지 범주로 구분됩니다.

창의적 패턴, 총 5가지 유형: 팩토리 메소드 패턴, 추상 팩토리 패턴 , 싱글톤 패턴, 빌더 패턴, 프로토타입 패턴.

총 7가지 구조 모드가 있습니다: 어댑터 모드, 데코레이터 모드, 프록시 모드, 외관 모드, 브리지 모드, 조합 모드, 플라이웨이트 모드.

행동 패턴 총 11개: 전략 패턴, 템플릿 메소드 패턴, 관찰자 ​​패턴, 반복 하위 패턴, 책임 사슬 패턴, 명령 패턴, 메모 패턴, 상태 패턴, 방문자 패턴, 중간 패턴, 해석기 패턴 .

세부 사항은 다음과 같습니다.

생성 유형은 다음과 같습니다.

1. 싱글톤, 싱글톤 모드: 클래스에 인스턴스가 하나만 있는지 확인하고 이에 대한 전역 액세스를 제공합니다.

포인트

2 추상 팩토리(Abstract Factory), 추상 팩토리: 구체적인 클래스를 지정하지 않고 일련의 관련되거나 상호 의존적인 개체를 생성하기 위한 인터페이스를 제공합니다.

3. 팩토리 메소드: 객체 생성을 위한 인터페이스를 정의하고 하위 클래스가 인스턴스화할 클래스를 결정하도록 합니다. 팩토리 메소드는 하위 클래스에 대한 클래스 인스턴스화를 지연시킵니다.

4. 빌더, 구성 모드: 복잡한 객체의 구성을 표현과 분리하여 동일한 구성 프로세스가 다른 표현을 만들 수 있습니다.

5. 프로토타입, 프로토타입 모드: 프로토타입 인스턴스를 사용하여 생성할 객체의 유형을 지정하고, 이러한 프로토타입을 복사하여 새 객체를 생성합니다.

동작 유형은 다음과 같습니다.

6. 반복자, 반복자 패턴: 객체의 내부 표현을 노출하지 않고 집계 객체의 각 요소에 순차적으로 액세스하는 방법을 제공합니다.

7. 관찰자, 관찰자 ​​패턴: 객체 간의 일대다 종속 관계를 정의합니다. 객체의 상태가 변경되면 이에 의존하는 모든 객체에 알림이 전송되고 자동으로 업데이트됩니다.

8. 템플릿 방법: 작동 중인 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 연기합니다. TemplateMethod를 사용하면 일부 특정 단계를 변경하지 않고도 하위 클래스가 알고리즘을 재정의할 수 있습니다.

9. 명령, 명령 모드: 요청을 개체로 캡슐화하여 다양한 요청, 대기열 요청 및 기록 요청 로그로 고객을 매개변수화하고 취소 가능한 작업을 지원할 수 있습니다.

10. 상태, 상태 모드: 내부 상태가 변경되면 개체의 동작을 변경할 수 있습니다. 개체의 클래스가 변경된 것 같습니다.

11. 전략, 전략 패턴: 일련의 알고리즘을 정의하고 하나씩 캡슐화하고 상호 교환 가능하게 만듭니다. 이 패턴은 알고리즘을 사용하는 고객과 독립적이게 만듭니다.

12. 책임의 중국, 책임 사슬 모델: 여러 개체에 요청을 처리할 수 있는 기회를 제공하여 요청 발신자와 수신자 간의 결합 관계를 방지합니다.

13. 중재자 해석기 패턴: 중개자를 사용합니다. 일련의 객체 상호작용을 캡슐화하는 객체입니다.

14. 방문자 모드: 객체 구조의 각 요소에 대해 수행되는 작업을 나타냅니다. 이를 통해 각 요소의 클래스를 변경하지 않고도 이 요소에 대해 수행되는 새 작업을 정의할 수 있습니다.

15. 통역사, 통역사 모드: 언어가 주어지면 문법 표현을 정의하고 이 표현을 사용하여 언어 문장을 해석하는 통역사를 정의합니다.

16. 메멘토, 메모 모드: 객체의 내부 상태를 캡처하고 이 상태를 객체를 파괴하지 않고 객체 외부에 저장합니다.

구조 유형은 다음과 같습니다.

Seventeen, Composite, 조합 모드: 개체를 트리 구조로 결합하여 부분과 전체 간의 관계를 표현합니다. Composite를 사용하면 단일 개체와 결합된 개체를 일관되게 사용할 수 있습니다.

18. Facade, Appearance 모드: 하위 시스템의 인터페이스 집합에 대해 일관된 인터페이스를 제공합니다. Fa?ade는 하위 시스템을 보다 쉽게 ​​사용할 수 있도록 높은 수준의 인터페이스를 제공합니다.

19. 프록시, 프록시 모드: 다른 객체에 프록시를 제공하여 이 객체에 대한 액세스를 제어합니다.

20. 어댑터, 어댑터 모드: 한 유형의 인터페이스를 고객이 원하는 다른 유형으로 변환 인터페이스, 어댑터 패턴 호환되지 않는 인터페이스로 인해 원래 함께 작동할 수 없었던 클래스가 함께 작동하도록 허용합니다.

21. Decrator, 데코레이션 모드: 추가된 기능 측면에서 데코레이터 모드는 하위 클래스를 생성하는 것보다 더 유연합니다.

22. 브리지, 브리지 패턴: 추상적인 부분과 구현 부분을 분리하여 독립적으로 변경할 수 있습니다.

스물셋, 플라이급, 플라이급 모드

실제로 동시 모드와 스레드 풀 모드의 두 가지 범주가 있습니다. 그림을 사용하여 전체적으로 설명하세요.

Java의 23가지 디자인 패턴과 6가지 주요 디자인 패턴 원칙 개요

2. 디자인 패턴의 6가지 원칙

일반 원칙: 개방형 폐쇄 원칙

개방형 및 폐쇄형 원칙은 확장 및 폐쇄가 가능하다는 의미입니다. 확장을 위해 열려 있습니다. 수정이 닫혀 있습니다. 프로그램을 확장해야 하는 경우 원본 코드를 수정할 수 없지만 핫스왑 효과를 얻으려면 원본 코드를 확장해야 합니다. 따라서 한 문장으로 요약하면 다음과 같습니다. 프로그램을 확장 가능하고 유지 관리 및 업그레이드하기 쉽게 만들기 위해서입니다. 이 효과를 얻으려면 인터페이스와 추상 클래스 등을 사용해야 합니다. 이에 대해서는 나중에 구체적인 디자인에서 언급하겠습니다.

1. 단일 책임 원칙

클래스 변경에 대한 이유가 하나만 있으면 됩니다. 즉, 각 클래스는 단일 책임을 구현해야 합니다. 그렇지 않으면 클래스를 분할해야 합니다.

2. 리스코프 대체 원리

리스코프 대체 원리 LSP(Liskov Substitution Principle LSP)는 객체지향 설계의 기본 원리 중 하나입니다 - ". 리스코프 대체 원리는

모든 기본 클래스가 나타날 때마다 하위 클래스를 만들 수 있다고 말합니다. LSP는 상속과 재사용의 초석이 되어야 합니다. 파생 클래스가 기본 클래스를 대체할 수 있고 소프트웨어 단위의 기능에 영향을 미치지 않는 경우에만 기본 클래스를 재사용할 수 있고 파생 클래스도 재사용할 수 있습니다. 기본 클래스를 기반으로 새로운 동작을 추가할 수 있습니다. Liskov 대체 원칙은 "개방-폐쇄" 원칙을 구현하는 핵심 단계는 기본 클래스와 하위 클래스의 상속입니다. 따라서 Liskov 대체 원칙은 추상화를 달성하기 위한 특정 단계에 대한 사양입니다. FromBaidu

Encyclopedia

역사적 대체 원칙에서 하위 클래스는 상위 클래스의 메서드를 덮어쓰거나 다시 작성하지 않도록 노력해야 합니다. . 부모 클래스는 정의된 구조를 나타내고 이 표준화된 인터페이스를 통해 외부 세계와 상호 작용하므로 하위 클래스는 이를 임의로 파괴해서는 안 됩니다.

3. 종속 반전 원칙

이것이 열기 및 닫기 원칙의 기초입니다. 인터페이스 지향 프로그래밍은 구체성보다는 추상화에 의존합니다. 구체적인 클래스를 사용하여 코드를 작성할 때 구체 클래스의 상위 인터페이스와 상호 작용합니다. 4. 인터페이스 분리 원칙 )

이 원칙은 다음을 의미합니다. 각 인터페이스에는 서브클래스에서 사용되지 않지만 구현해야 하는 메서드가 없습니다. 그렇지 않은 경우 인터페이스를 분할하여 여러 개의 격리된 인터페이스를 사용해야 합니다. 단일 인터페이스(여러 인터페이스 메서드를 하나로 결합한 인터페이스) )이 더 좋습니다.

5. Demeter 원리

즉, 클래스가 종속 클래스에 대해 덜 알수록 좋습니다. , 로직은 메소드 내부에 캡슐화되어 공개 메소드를 통해 외부에 제공되어야 합니다. 이렇게 하면 종속 클래스가 변경될 때 클래스가 이를 가장 적게 인식하게 됩니다. 원칙의 또 다른 표현은 다음과 같습니다. 클래스 간에 커플링 관계가 있는 한 이를 프렌드 관계라고 하며 커플링은 종속성, 연관, 집합, 조합 등으로 구분됩니다. 메소드 매개변수 및 메소드 반환 값에 포함된 클래스는 지역 변수와 임시 변수입니다.

6. 복합 재사용 원칙 )

상속을 사용하는 대신 구성/집계를 먼저 사용하는 것이 원칙입니다. Java의 디자인 패턴 A. 생성 패턴

이 섹션에서는 Java의 23가지 디자인 패턴을 개념, 응용 시나리오 등을 자세히 소개하고 디자인 패턴의 특성과 원리를 기반으로 분석합니다.

먼저 단순 팩토리 패턴은 23에 관련된 패턴에 속하지 않습니다. 단순 팩토리는 일반적으로 일반 단순 팩토리, 다중 메소드 단순 팩토리, 정적 메소드 단순 팩토리로 구분됩니다.

0. 단순 팩토리 모드

단순 팩토리 모드는 세 가지 유형으로 나뉩니다. 01. 일반

은 동일한 인터페이스를 구현하는 일부 클래스의 인스턴스를 생성하기 위해 팩토리 클래스를 설정하는 것입니다. 먼저 관계 다이어그램을 살펴보세요.

예: (이메일 및 문자 메시지 전송의 예를 들어 보겠습니다.) 먼저 둘 사이에 공통 인터페이스를 만듭니다.

public interface Sender {
    public void Send();
}
로그인 후 복사

두 번째로 구현 클래스를 만듭니다.

public class MailSender implements Sender {
    @Override
    public void Send() {
    System.out.println("this is mailsender!");
    }
}

public class SmsSender implements Sender {
    @Override
    public void Send() {
    System.out.println("this is sms sender!");
    }
}
로그인 후 복사

마지막으로 팩토리 클래스를 빌드합니다:

public class SendFactory {
    public Sender  produce(String type){
    if ("mail" .equals(type) {
        return new MailSender( );
    }else if("sms" .equals(type)){
        return new SmsSender();
    }else{
        System. out . println("请输入正确的类型!"); 
        return null;)
    }
}
로그인 후 복사

테스트해 보겠습니다.

public class FactoryTest {
    public static void main(String[] args) {
        SendFactory factory = new SendFactory();
        Sender sender = factory.produce("sms");
        sender.Send();
    }
}
로그인 후 복사
Java의 23가지 디자인 패턴과 6가지 주요 디자인 패턴 원칙 개요출력: SMS 발신자입니다!

02. 다중 메서드

는 일반적인 팩토리 메서드 패턴을 개선한 것입니다. pass 문자열에 오류가 있으면 객체를 제대로 생성할 수 없으며, 다중 팩토리 메소드 패턴은 객체를 별도로 생성할 수 있는 다중 팩토리 메소드를 제공합니다. 관계 다이어그램:

위 코드를 수정하고 SendFactory 클래스를 다음과 같이 변경합니다.

public class SendFactory {
    public Sender produceMail(){
        return new MailSender();   
    }        
    public Sender produceSms(){
        return new SmsSender();
    }
}
로그인 후 복사

테스트 클래스는 다음과 같습니다.

public class FactoryTest{
    public static void main(String[] args) {
        SendFactory factory = new SendFactory( );
        Sender sender = factory.produceMail();
        sender.Send();
    }
}
로그인 후 복사
출력: 이것은 mailsender입니다!

관련 기사:

Java 디자인 패턴 - 디자인 패턴의 6가지 원칙

24가지 디자인 패턴과 Java의 7가지 원칙# 🎜🎜## 🎜🎜#

위 내용은 Java의 23가지 디자인 패턴과 6가지 주요 디자인 패턴 원칙 개요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿