단일 책임 원칙
정의: 클래스 변경에 대한 이유는 두 가지 이상입니다. 평신도의 관점에서 보면 클래스는 단 하나의 책임만 담당합니다.
리히터 대체 원칙
정의 1: If For T1 유형의 모든 객체 o1에는 T2 유형의 객체 o2가 있으므로 T1으로 정의된 모든 프로그램 P는 모든 객체 o1
인 경우 프로그램 P의 동작이 o2로 대체됩니다. 변경되지 않으면 T2 유형은 T1 유형의 하위 유형입니다.
정의 2: 이 기본 클래스를 참조하는 모든 위치는 해당 하위 클래스의 개체를 투명하게 사용할 수 있어야 합니다. 즉, 기본 클래스가 나타날 수 있는 곳이면 어디든 하위 클래스가 나타날 수 있다는 것입니다
.
일반인의 관점에서 리히터 대체 원리는 하위 클래스가 상위 클래스의 기능을 확장할 수 있지만 상위 클래스의 원래 기능을 변경할 수는 없다는 것입니다. 여기에는 다음과 같은 4가지 의미 수준이 포함됩니다:
1) 하위 클래스는 상위 클래스의 추상 메서드를 구현할 수 있지만 상위 클래스의 비추상 메서드를 재정의할 수는 없습니다.
2) 서브클래스는 고유한 메서드를 추가할 수 있습니다.
3) 하위 클래스의 메서드가 상위 클래스의 메서드를 재정의하는 경우 메서드의 전제 조건(예: 형식 매개 변수) 메소드)는 상위 클래스 메소드보다 더 편안한 입력 매개변수를 사용해야 합니다.
4) 하위 클래스의 메소드가 상위 클래스의 추상 메소드를 구현할 때 메소드의 사후조건(즉, 메소드의 반환값)은 다음과 같습니다. 부모 클래스보다 더 엄격합니다.
종속성 역전 원칙
정의: 상위 수준 모듈은 추상화에 의존해야 하는 하위 수준 모듈에 의존해야 합니다. 세부 사항에 의존해서는 안 됩니다.
종속성 반전 원칙의 핵심 아이디어는 인터페이스에 대한 프로그래밍입니다.
종속성을 전달하는 방법에는 세 가지가 있습니다: 1. 인터페이스 전달, 2. 생성자 메서드 전달, 3. Setter 메서드 전달.
실제 프로그래밍에서는 일반적으로 다음 세 가지 사항을 수행해야 합니다.
1) 사용해 보세요. 가능한 한 낮은 수준의 모듈 추상 클래스나 인터페이스 또는 둘 다 있어야 합니다.
2) 변수 의 선언형은 최대한 추상 클래스나 인터페이스여야 합니다.
3) 상속을 사용할 때는 Liskov 대체 원칙을 따릅니다.
인터페이스 격리 원칙
정의: 클라이언트가 수행하는 작업 not 필요하지 않은 인터페이스에 의존해야 합니다. 다른 클래스에 대한 클래스의 종속성은 가장 작은 인터페이스를 기반으로 해야 합니다.
은 전체적으로 큰 인터페이스를 제공하기보다는 클라이언트에게 가능한 한 작은 개별 인터페이스를 제공해야 합니다.
1) 단일 일반 인터페이스보다 여러 개의 특수 인터페이스를 사용하는 것이 좋습니다.
2) 한 클래스가 다른 클래스에 종속되는 것은 가장 작은 인터페이스를 기반으로 해야 합니다.
3) 인터페이스는 역할을 나타내며, 하나의 인터페이스에 다른 역할을 할당해서는 안 됩니다. 관계가 없는 인터페이스는 서로 병합되어 부풀어오르는 큰
인터페이스를 형성하며, 이는 역할과 인터페이스를 오염시킵니다.
4). "클라이언트는 자신이 사용하지 않는 메서드에 의존하도록 강요해서는 안 됩니다. 인터페이스는 클라이언트에 속하며 해당 인터페이스가 있는 클래스 계층 구조에 속하지 않습니다. "
이것은 매우 분명합니다. 더 쉽게 말하면 고객에게 자신이 사용하지 않는 방법을 사용하도록 강요하지 마십시오. 사용자에게 자신이 사용하지 않는 방법을 사용하도록 강요한다면 사용하지 않으면
일부 고객은 이러한 미사용 방법의 변경으로 인해 변경 사항을 직면하게 됩니다.
Dimit 원리
정의: 객체 지식 다른 물건은 최소한으로 유지해야 합니다.
분명히 인터페이스 격리 원칙과 일반화된 Dimit 원칙은 한 소프트웨어 엔터티와 다른 소프트웨어 엔터티 간의 통신에 대한 제한입니다. 일반화된 데메테르 원칙에서는
의사소통의 폭과 깊이를 최대한 제한해야 합니다. 인터페이스 격리 원칙이 제한하는 것은 통신의 폭입니다. 즉, 통신은 가능한 한 좁아야 합니다.
데메테르의 법칙은 가장 잘 알려지지 않은 원리라고도 불리며 1987년 미국 노스이스턴 대학교의 이언 홀랜드(Ian Holland)가 처음 제안했습니다. 평신도의 관점에서
은 클래스가 자신이 의존하는 클래스에 대해 덜 알수록 좋다는 것을 의미합니다. 즉, 종속 클래스의 경우 로직이 아무리 복잡하더라도
로직을 클래스 내부에 캡슐화하려고 노력하며, 제공된 public 메소드를 제외하면 노출되지 않습니다. 외부 세계에 정보를 유출합니다. 데메테르의 법칙은 더 간단하게 정의됩니다.
인 친구하고만 소통하세요. 먼저, 직접적인 친구가 무엇인지 설명하겠습니다. 각 객체는 다른 객체와 결합 관계를 갖습니다. 두 객체 사이에
결합 관계가 있는 한 다음과 같이 말할 수 있습니다. 두 개체는 친구입니다. 결합에는 종속성, 연관, 결합, 집계 등 여러 가지 방법이 있습니다. 그 중 멤버 변수
, 메소드 매개변수, 메소드 반환 값에 나타나는 클래스를 다이렉트 프렌드라고 부르지만, 지역 변수에 나타나는 클래스는 다이렉트 프렌드가 아닙니다. 즉, 익숙하지 않은 클래스
는 클래스 내부에 지역 변수로 나타나지 않는 것이 가장 좋습니다.
개방-폐쇄 원칙
소프트웨어 기업은 다음 대상에게 공개되어야 합니다. 확장 프로그램, 수정을 위해 닫혔습니다.
조합/집계 재사용 원칙
재사용을 위해서는 상속 대신 구성/집계를 사용하십시오.
위 내용은 디자인 패턴의 6가지 원칙에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!