>  기사  >  Java  >  Java의 일반적인 디자인 패턴

Java의 일반적인 디자인 패턴

伊谢尔伦
伊谢尔伦원래의
2016-12-05 13:44:021102검색

Java에는 총 23개의 공통 디자인 패턴이 있습니다. 크게 생성 유형, 구조 유형, 행동 유형의 3가지로 구분할 수 있습니다.
창의적인 디자인 패턴은 다음과 같습니다.

1. 싱글톤, 싱글톤 모드: 클래스에 인스턴스가 하나만 있도록 보장하고 고유한 전역 액세스 지점을 제공합니다.

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

3. 팩토리 메소드: 객체 생성을 위한 인터페이스를 정의합니다. 팩토리 메소드는 클래스의 하위 클래스 인스턴스화를 지연합니다.

4. 빌더, 구성 모드: 동일한 구성 프로세스를 가진 클래스가 서로 다른 표현을 가질 수 있도록 복잡한 클래스의 구성과 표현을 분리합니다.

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

동작 디자인 패턴은 다음과 같습니다.

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

7. 관찰자, 관찰자 ​​패턴: 객체 간의 일대다 관계를 정의합니다. 객체가 변경되면 이에 의존하는 객체에 알림이 전달되고 업데이트됩니다.

8. 템플릿 방법: 작업에서 알고리즘의 뼈대를 정의하고 일부 단계를 하위 클래스로 연기합니다. 템플릿 방법을 사용하면 알고리즘의 뼈대를 변경하지 않고도 하위 클래스가 알고리즘의 특정 측면을 변경할 수 있습니다.

9. 명령, 명령 모드: 요청을 객체로 캡슐화하여 다양한 요청, 대기열 요청 및 기록 요청 로그로 사용자를 매개변수화하고 되돌릴 수 있는 작업을 지원할 수 있습니다.

10. 상태, 상태 모드: 객체의 상태가 변경되면 객체의 동작을 변경할 수 있습니다.

11. 전략, 전략 패턴: 일련의 알고리즘을 정의하고 서로 대체할 수 있도록 하나씩 캡슐화합니다. 이 패턴을 사용하면 알고리즘을 사용하는 고객과 독립적으로 만들 수 있습니다.

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

13. 중재자, 중재 모드: 중재자 개체를 사용하여 일부 개체의 상호 작용을 캡슐화합니다.

14. 방문자, 방문자 모드: 객체 구조의 각 요소에 작용하는 작업을 나타내며, 각 요소의 클래스를 변경하지 않고도 이 요소에 작용하는 새로운 작업을 정의할 수 있습니다.

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

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

구조적 디자인 패턴은 다음과 같습니다.

17. 복합, 결합 모드: 객체를 트리 구조로 결합하여 부분과 전체 간의 관계를 표현함으로써 사용자가 단일 객체와 전체 간의 관계를 이해할 수 있도록 합니다. 결합된 개체를 일관성 있게 사용하세요.

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

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

20. 어댑터, 어댑터 모드: 인터페이스의 종류를 사용자가 원하는 인터페이스로 변환합니다. 어댑터는 인터페이스가 호환되지 않아 함께 작동할 수 없는 클래스를 가능하게 합니다.

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

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

23. 플라이웨이트, 플라이웨이트 모드: 공유 개체를 사용하여 메모리 사용량을 최대한 줄이고 유사한 개체와 정보를 최대한 공유합니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.