독서 노트 의 1: 디자인 모델 입문 (전략 모델)
2581 단어 디자인 모델 과 구조
우선, 우 리 는 각종 오리 의 부 류 를 설계 해 야 한다. 오리 의 공 통 된 특징 과 행 위 를 포함한다.
Duck
quack()
swim()
display()
.... //오리 의 기타 행동 특징
그 후에 PM (제품 매니저) 은 오리 가 비행 하 는 행 위 를 해 야 하기 때문에 우 리 는 자 연 스 럽 게 아버지 류 Duck 을 fly () 방법 에 넣 었 고 자 류 는 아버지 류 를 계승 함으로써 모두 비행 행 위 를 했다 고 생각 했다.
문제 가 생 겼 군..
PM 은 게임 속 장난감 고무 오리 도 날 아 오 르 는 것 을 발견 했다. 이 건 정말 천둥 이 야.
그래서 불쌍 한 우 리 는 다시 설계 해 야 한다.우 리 는 아버지 류 에서 fly () 방법 은 어떠한 실현 도 하지 않 고 자 류 에서 각자 자신의 fly 행 위 를 실현 하 는 것 을 생각 했다. 예 를 들 어 고무 오리 의 fly () 는 아무것도 하지 않 는 다.
하지만 곰 곰 이 생각해 보면 앞으로 오리 의 종류 가 계속 증가 할 것 이다. 우 리 는 fly 방법 을 계속 실현 하고 덮어 야 한다. 이것 은 정말 슬프다.
어 떡 하지?
우 리 는 이러한 fly 특수 행 위 를 Duck 류 에서 분리 하여 새로운 종 류 를 만들어 구체 적 인 행 위 를 실현 해 야 한 다 는 깨 우 침 을 받 았 다.이 그룹의 새로운 종 류 는 fly 행위 유형의 인터페이스 로 이 루어 진다.
OK, 우 리 는 비행 행위 의 인 터 페 이 스 를 설계 했다.
FlyBehavior
우 리 는 이 인터페이스 에 대해 서로 다른 비행 류 를 실현 할 수 있다. 예 를 들 어 Fly With Wings (진실 한 날개 비행). 플라이 노 웨 이 (날 지 못 한다, 예 를 들 어 고무 오리)
이렇게 하면 우리 의 오리 부류 코드 는 다음 과 같다.
public abstract class Duck{
FlyBehavior flyBehavior;
public Duck(){
}
public abstract void display();
public void performFly(){
flyBehavior.fly();
}
}
FlyBehavior 인터페이스의 실현 코드:
public interface FlyBehavior{
public void fly();
}
public class FlyWithWings implements FylBehavior{
public void fly()
{
........
}
}
public class FlyNoWay implements FlyBehavior //
{
public void fly()
{
......
}
}
현재 의 디자인 은 이미 매우 큰 발전 을 이 루 었 지만 우 리 는 구체 적 인 행위 인 터 페 이 스 를 동적 으로 연결 할 수 있 도록 해 야 한다.그래서 우 리 는 Duck 부류 에 새로운 방법 을 넣 었 다.
public void setFlyBehavior(FlyBehavior fb)
{
flyBehavior = fb;
}
이렇게 하면 우 리 는 오리 의 구체 적 인 행동 을 동태 적 으로 바 꿀 수 있 습 니 다. 다행 입 니 다 하하
상기 실현 과정 에서 우 리 는 여러 가지 유형 을 조합 하여 사용 하면 유연성 이 강하 고 결합 성도 상대 적 으로 약 해 졌 다.
상기 디자인 을 마치 고 우 리 는 첫 번 째 디자인 모델 인 전략 모델 (Strategy Pattern) 을 배 웠 다.
정책 모드 정의: 이 는 알고리즘 족 을 정의 하고 각각 밀봉 하여 그들 사이 에 서로 바 꿀 수 있 도록 합 니 다. 이 모델 알고리즘 의 변 화 는 알고리즘 을 사용 하 는 고객 에 게 독립 되 어 있 습 니 다.
소프트웨어 개발 에 있어 서 변 함 없 는 진리 가 있다. change
설계 원칙:
1. 응용 프로그램 에서 변화 가 필요 할 수 있 는 부분 을 찾 아 독립 시 키 고 변화 가 필요 없 는 코드 와 섞 이지 마 세 요.
2. 인터페이스 프로 그래 밍 을 위 한 것 이지 프로 그래 밍 을 위 한 것 이 아니다.
3. 조합 을 많이 쓰 고 계승 을 적 게 쓴다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
zipkin 2 응용 tracezipkin 은 간단 하고 간단 한 응용 trace 도구 로 서 작은 마이크로 응용 에 적합 합 니 다.2X 와 1X 에 중대 한 변화 가 생 겼 습 니 다.다음은 2X 를 어떻게 효과적으로 이용 하 는 지 설명 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.