간단 한 디자인 모드 의 Observer (관찰자) 모드
class A{
functionA(){
1;
}
}
1. 우 리 는 functionA () 의 기능 을 확대 하고 싶 습 니 다.2. 우 리 는 서로 다른 상황 에서 functionA () 가 서로 다른 실현 (다 형) 이 있 기 를 바란다.다 태 를 생각하면 우 리 는 계승 으로 실현 할 생각 을 할 수 있다.
class childA extends A{
functionA(){
1;
2;
}
}
class childB extends A{
functionA(){
1;
3;
}
}
위의 방식 은 평소에 각종 다 중 기능 을 실현 할 때 자주 사용 된다. 대상 을 대상 으로 프로 그래 밍 하 는 기본 원칙 은 대상 을 대상 으로 하 는 것 이 아니 라 인터페이스 프로 그래 밍 이다. 따라서 우 리 는 상기 방식 에 대해 추상 적 이 고 template method 템 플 릿 방법 모델 로 상기 상황 을 실현 한다.
abstract class A{
functionA(){
1;
functionB()
}
abstract functionB();
}
class childA extends A{
functionA(){
1;
2;
functionB();
}
functionB(){
...
}
}
'자바 프로 그래 밍 사상' 이라는 책 에서 계승 을 사용 하 는 것 은 childA 와 A 가 논리 적 으로 강 한 연관 성 을 가지 기 때 문 이 라 고 언급 한 것 을 기억한다. 즉, childA is like A 이다.이들 이 강 한 연관 성 이 없다 면 상속 을 통 해 이 같은 상황 을 이 루 기 위해 서다.그렇다면 상속 을 사용 하 는 것 은 적절 한 선택 이 아니 라 '상속' 이라는 단어의 의미 에 엄 격 히 위배 된다.우 리 는 계승 을 제외 하고 조합 도 대상 언어 에서 다 형 을 실현 하 는 중요 한 방법 이라는 것 을 안다.먼저 다음 과 같은 조합 으로 이 루어 진 상기 상황 을 살 펴 보 자.
class A{ B b = new childB1(); functionA(){ b.functionB(); } } interface B{ functionB(); } class childB1 implements B{
functionB(){
4. 567913. 이들 의 차 이 를 발 견 했 습 니까? 류 A 에서 attach () 방법 으로 동태 적 으로 B 대상 을 불 러 왔 습 니 다. 이 말 을 하면 평소에 만 나 고 싶 었 던 많은 안 드 로 이 드 소스 코드 와 어디서 많이 본 듯 한 느낌 이 듭 니 다.함수 와 클래스 이름 을 바 꾸 면 알 수 있 습 니 다.}
}
, B , B b = new childB1()。 , , , new childB1() B , , A childB1 , , , :이것 이 바로 관찰자 모델 이다.이 모델 의 원인 은 우리 가 상기 실제 상황 에서 얻 을 수 있다. 그의 장점 은 GOF 가 이 모델 에 대한 정리 설명 을 통 해 '우 리 는 일치 성 을 유지 하기 위해 각종 긴밀 한 결합 을 하고 싶 지 않다. 왜냐하면 이것 은 그들의 중용 성 을 낮 추 었 기 때문이다'. 즉, 우 리 는 유형 A 가 기능 적 으로 유형 B 에 대한 의존성 을 유지 하지만 우 리 는 이들 의 결합 성 이 너무 강하 기 를 원 하지 않 는 다.관찰자 모드 는 이 점 을 잘 해 냈 다.class A{ B b; functionA(){ attach(new childB1()); b.functionB(); } attach(B b){ this.b = b; } } interface B{ functionB(); } class childB1 implements B{ functionB(){ } }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.