GoF 디자인 모델 - 개요

4558 단어
프로 그래 밍 언어 를 습득 하 는 것 은 단지 컴퓨터 에 어떻게 명령 을 내 리 는 지 를 파악 하 는 것 을 의미 할 뿐, 도대체 컴퓨터 가 어떻게 해 야 하 는 지, 어떻게 지휘 해 야 하 는 지 는 또 다른 문제 이다. 어떻게 프로 그래 밍 해 야 하 는 지.디자인 모델 은 프로그래머 의 '무공 방식' 으로 우리 에 게 어떻게 프로 그래 밍 하 는 지 가르쳐 준다.이 방식 을 지 키 지 않 아 도 프로 그래 밍 이 가능 하지만 전체 프로그래머 군단 이 일치 하 는 걸음 으로 업 무 를 조율 할 수 있 도록 디자인 모델 의 존재 가 필요 하 다.이 는 일련의 '무공 체계' 와 대응 하 는 방식 의 명칭 을 정 의 했 는데 업계 내의 규범 과 용 어 를 제정 하여 프로그래머 군단 구성원 간 의 상호 소통 을 편리 하 게 하 는 것 과 같다.
GoF 의 23 가지 디자인 모델
GoF 는 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 네 명 을 말 하 는데, 이들 네 명 은 Gang of Four, 줄 임 말 GoF 로 불 린 다.이 네 사람 은 일찍이 《 Design Patterns: Elements of Reusable Object - Oriented Software 》, 즉 유명한 《 디자인 모델 》 이라는 책 을 함께 저술 한 적 이 있다.이 책 은 프로그래머 계 의 성경 중 하나 로 널리 알려 져 있다.이 책 에서 23 가지 디자인 모델 을 소개 했다. 비록 디자인 모델 은 이 23 가지 에 그 치지 않 지만 이 23 가지 가 너무 자주 사용 되 기 때문에 우 리 는 디자인 모델 이 라 고 말한다. 즉, GoF 의 23 가지 디자인 모델 을 말한다.본 고 에서 후속 적 으로 말 한 디자인 모델 도 기본 디자인 모델 을 GoF 의 23 가지 디자인 모델 로 한다.또한, 나의 첫 번 째 언어 는 자바 이 고 자바 도 거의 OO 계 의 기본 언어 이기 때문에 후속 글 은 자바 를 사용 할 것 이다.글 에 나타 난 예제 코드 는 자바 - design - pattern - samples 프로젝트 에 동기 화 됩 니 다.
6 대 원칙
모든 디자인 모델 은 다음 과 같은 여섯 가지 기본 적 인 디자인 원칙 을 따른다.
  • 단일 직책 원칙: 단일 책임 원칙 (SRP)
  • 개방 폐쇄 원칙: The Open Closed Principle (OCP)
  • 리 씨 교체 원칙: 리 스 코 프 대체 원칙 (LSP)
  • 디 미트 법칙: The law of Demeter (LD)
  • 인터페이스 격 리 원칙: 인터페이스 분리 원리 (ISP)
  • 후진 원칙 에 의존: Dependency Inversion Principle (DIP)
  • 6 대 설계 원칙 은 영문 이니셜 을 SOLID 원칙 이 라 고 약칭 한다.진짜!6 대 원칙 이 잖 아!왜 줄 임 말 이 다섯 글자 밖 에 없어!이거...나 는 정말 모른다!아마도 리 씨 교체 원칙 과 디 미트 법칙의 두 개 L 를 하나 로 합치 면 더 보기 좋 겠 지!이 유 를 아 는 친구 가 있 으 면 블 로그 에 글 을 남 겨 주세요!
    단일 직책 원칙
    한 가지 일 만 하고 이런 주요 직책 과 무관 한 일 을 하지 마라.
    개방 폐쇄 원칙
    확장 개방, 수정 종료.쉽게 말 하면 클래스 나 인터페이스 가 정 의 된 후에 파괴 적 인 업 데 이 트 를 할 수 없습니다!bug 가 없 거나 클래스, 인 터 페 이 스 를 수정 하 는 것 이 내부 실현 체 제 를 개선 하기 위해 서가 아니라면 이런 종 류 를 수정 해 서 는 안 됩 니 다.개폐 원칙 의 목적 은 클래스 나 인터페이스 후속 버 전이 뒤로 호 환 될 수 있 도록 유지 하 는 것 이 가장 근본 적 인 원칙 이다.개폐 원칙 은 6 대 원칙 중 가장 중요 한 것 이 니 하나의 총 원칙 이 라 고 할 수 있 습 니 다!
    이론 적 으로 우 리 는 개폐 원칙 을 엄 격 히 지 켜 야 하지만 현실 은 그리 이상 적 이지 않다.어떤 소프트웨어 도 디자인 할 때 후속 발전 중의 모든 수 요 를 예측 할 수 없 기 때문에 현실 상황 은 수정 이 거의 불가피 하 다.예 를 들 어 자바 8 에서 stream 을 위해 삼 관 을 망 치 는 default 방법 을 추 가 했 는데 이것 이 바로 살 아 있 는 예 이다.우 리 는 디자인 을 할 때 가능 한 한 이런 원칙 을 지 킬 수 밖 에 없다!
    나 와 함께 마음속 으로 프로그래머 성경 의 하나님 의 지 시 를 몇 번 묵독 했다. 확장 개방, 수정 폐쇄!확장 개방, 수정 종료!확장 개방, 수정 종료!
    리 씨 교체 원칙
    모든 부류 가 나타 날 수 있 는 곳 은 투명 하 게 하위 클래스 로 교체 할 수 있다.즉, 자 류 는 부 류 를 확장 할 수 있 지만 부 류 의 원래 기능 을 수정 할 수 없다 는 것 이다. is a 실현 of .
    디 미트 의 법칙
    디 미트 법칙 은 최소 지식 원칙 인 Least Knowledge Principle (LKP) 이 라 고도 부 릅 니 다. 자신 이 의존 해 야 할 유형 에 대해 아 는 것 이 적 을 수록 좋다 는 뜻 입 니 다!우리 의 목 표 는 충치 가 없다 는 것 이다!: -)농담 입 니 다!높 은 내부 집적, 낮은 결합.
    인터페이스 격 리 원칙
    비대 한 인 터 페 이 스 를 사용 하 는 것 보다 작은 인 터 페 이 스 를 여러 개 사용 하 는 것 이 더 좋다!즉, 우아 한 프로그램 은 정성 을 들 여 보호해 야 하기 때문에 그녀 를 보호 하기 위해 서 는 너무 굵 은 인 터 페 이 스 를 경멸 하고 가 는 인 터 페 이 스 를 좋아해 야 한 다 는 것 이다.: -)나 는 당신들 이 무슨 생각 을 하고 있 는 지 알 지만, 본 기사 가 가리 키 는 것 은 당신 이 생각 하 는 그런 뜻 이 아 닙 니 다!가 는 인 터 페 이 스 는 재 구성 에 유리 하 다!: -)원칙 은 위반 하 는 데 쓰 인 다!수정 닫 기?그 럴 리 가!누가 쓴 코드 를 한 걸음 에 영원히 수정 하지 않 을 수 있 습 니까?또한 가 는 인터페이스 도 클 라 이언 트 가 최소 지식 원칙 을 지 키 는 데 유리 하 다.
    후진 원칙 에 의존 하 다.
    구체 적 인 실현 에 의존 하지 말고 추상 에 의존 해 야 한다!즉, '인터페이스' 를 위 한 프로 그래 밍 이지 클래스 프로 그래 밍 을 위 한 프로 그래 밍 이 아 닙 니 다!이렇게 하면 클 라 이언 트 와 실현 류 의 결합 을 해제 할 수 있다.
    6 대 설계 원칙 총화
    개폐 원칙 은 우리 가 쓴 종 류 를 수정 하지 말 라 고 요구 하 며, 기능 이 필요 하 다 면 확장 하 라 고 요구한다.단일 직책 원칙 은 우리 에 게 한 가지 일 만 하도록 요구한다.리 씨 교체 원칙 은 우리 자 류 가 반드시 부 류 를 겸용 해 야 한다 고 요구한다.디 미트 법칙 은 우리 에 게 가능 한 한 다른 종류 에 의존 하지 말 라 고 요구한다.인터페이스 격 리 원칙 은 우리 가 인 터 페 이 스 를 정의 할 때 가능 한 한 간단 해 야 한다.후진 원칙 에 의존 하 는 것 은 우리 가 실현 류 에 의존 해 서 는 안 된다 는 것 을 요구한다!
    디자인 모드 분류
    GoF 23 의 디자인 모델 은 일반적으로 세 가지 로 나 뉜 다.
    생 성 모드
  • 공장 방법 모델 (공장 방법)
  • 추상 적 인 공장 모델 (Abstract Factory)
  • 단일 모드 (Singleton)
  • 작성 자 모드 (Builder)
  • 원형 모드 (Prototype)
  • 그 밖 에 단순 공장 모델 (Simple Factory) 도 계산 해 야 한다.하지만 23 개 모드 를 맞 추기 위해 목록 에 넣 지 않 았 다.
    구조 형 패턴
  • 어댑터 모드 (어댑터)
  • 외관 모델 (Facade)
  • 유원 모드 (Flyweight)
  • 조합 모드 (Composite)
  • 장식 기 모드 (장식 기)
  • 프 록 시 모드 (프 록 시)
  • 브리지 모드 (Bridge)
  • 행동 형 패턴
  • 전략 모델 (전략)
  • 상태 모드 (State)
  • 직책 체인 모델 (책임 체인)
  • 관찰자 모드 (Observer)
  • 템 플 릿 방법 모드 (템 플 릿 방법)
  • 명령 모드 (Command)
  • 비망록 모드 (Memento)
  • 교체 기 모드 (Iterator)
  • 조정자 모드 (Mediator)
  • 해석 기 모드 (Interpreter)
  • 방문 자 모드 (Visitor)
  • 상기 디자인 모델 은 링크 가 있 는 것 은 이미 소 개 된 글 을 썼 음 을 나타 내 고 링크 를 직접 찍 어서 해당 하 는 글 을 볼 수 있다.

    좋은 웹페이지 즐겨찾기