HeadFirst 디자인 모델 - 프롤로그 요약
1503 단어 first
class Duck
{
quack();
swim();
virtual display()=0
};
지금 오리 가 날 수 있 게
class Duck
{
quack();
swim();
fly();
virtual display()=0
};
추상 류 에 fly () 를 더 하면 좋 은 방안 이 아 닐 것 이다. 파생 류 에서 (각종 다른 오리) 어떤 오 리 는 날 수 없고 fly () 를 덮 는 방법 을 사용 할 수 있 기 때문이다.
계승 을 이용 하여 Duck 을 제공 하 는 행 위 는
1) 코드 는 여러 하위 클래스 에서 반복
2) 실행 할 때의 행동 은 쉽게 바 뀌 지 않 는 다
3) 확장 하기 어렵 고, 추가 행 위 는 거의 모든 파생 류 를 변화 시킨다.
인 터 페 이 스 를 이용 하여 fly 와 quack 을 실현 하면 C + + 에 있어 서 Fly 와 Quack 두 추상 류 를 정의 하고 fly 와 quack 이 필요 한 Duck 파생 류 에서 이 두 추상 류 를 계승 합 니 다.
그러나 이러한 파생 류 는 fly 와 quack 을 완전히 실현 해 야 한다. 두 추상 류 는 fly 와 quack 을 추상 화 하 는 것 일 뿐 코드 는 재 활용 할 수 없다.
2 문제 분석
계승 을 사용 하 는 것 은 문 제 를 잘 해결 하지 못 한다. 오리 의 행 위 는 자 류 에서 끊임없이 변화 하고 모든 자 류 가 이런 행 위 를 할 때 적절 하지 않다.
Fly 와 Quack 인터페이스 가 이 문 제 를 해결 한 것 같 습 니 다. fly 와 quack 의 오리 만 이 두 인 터 페 이 스 를 계승 할 수 있 습 니 다.그러나 자바 인 터 페 이 스 는 실현 코드 가 없 으 며, 계승 인 터 페 이 스 는 코드 재 활용 을 실현 할 수 없다.
디자인 원칙 1: 응용 에서 변화 가 필요 한 점 을 찾 아 독립 시 키 고 변화 가 필요 없 는 코드 와 섞 이지 않 는 다.
오리 의 행동 이 각각 다 르 기 때문에 행 위 를 추상 적 인 Duck 에서 분리 하여 Fly 와 Quack 기 류 를 실현 하고 서로 다른 fly 와 quack 류 를 파생 시킨다.
설계 원칙 2: 인터페이스 프로 그래 밍 을 위 한 것 이지 프로 그래 밍 을 위 한 것 이 아니다.
우 리 는 오리 의 행동 이 탄력 이 있 기 를 바란다. 즉, 오리 의 행동 이 동태 적 으로 바 뀔 수 있 기 를 바란다. 그러면 인터페이스 프로 그래 밍 이 필요 하 다.
인터페이스 프로 그래 밍 에 대한 정확 한 의 미 는 기본 프로 그래 밍 을 대상 으로 Duck 류 에 행위 기본 클래스 의 지침 대상 을 추가 하고 Duck 파생 류 에서 이 지침 을 통 해 구체 적 인 행 위 를 호출 하 는 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Garbage First (G1) 소개G1 이 실행 하 는 첫 번 째 단 계 는 초기 태그 (Initial Marking) 이 며, 이 단 계 는 STW (Stop the World) 이 며, 모든 mutator threads 가 정지 되 어 GC Ro...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.