JS 디자인 모델 의 전략 모델 개념 과 용법 분석
정책 모드 의 개념 참조:
소프트웨어 개발 에서 도 비슷 한 상황 을 자주 만 나 특정한 기능 을 실현 하 는 데 여러 가지 알고리즘 이나 전략 이 있 기 때문에 우 리 는 환경 이나 조건 에 따라 서로 다른 알고리즘 이나 전략 을 선택 하여 이 기능 을 완성 할 수 있다.
예 를 들 어 찾기,정렬 등 자주 사용 하 는 방법 은 하 드 코딩(Hard Coding)이 한 종류 에 있 습 니 다.만약 에 여러 가지 검색 알고리즘 을 제공 해 야 한다 면 이 알고리즘 을 한 종류 에 쓸 수 있 습 니 다.이 종류 에서 여러 가지 방법 을 제공 하고 모든 방법 은 구체 적 인 검색 알고리즘 에 대응 할 수 있 습 니 다.물론 이 검색 알고리즘 을 하나의 통 일 된 방법 에 봉 하여 if...else...또는 case 등 조건 판단 문 구 를 통 해 선택 할 수 있 습 니 다.
이 두 가지 실현 방법 을 우 리 는 모두 하 드 인 코딩 이 라 고 할 수 있다.만약 에 새로운 검색 알고리즘 을 추가 하려 면 패 키 징 알고리즘 류 의 소스 코드 를 수정 해 야 한다.검색 알고리즘 을 바 꾸 려 면 클 라 이언 트 호출 코드 도 수정 해 야 합 니 다.
이 알고리즘 클래스 에 대량의 검색 알고리즘 을 패키지 하 였 는데,이러한 코드 는 비교적 복잡 하고 유지 보수 가 비교적 어 려 울 것 이다.만약 에 우리 가 이러한 전략 을 클 라 이언 트 에 포함 시 키 면 이런 방법 은 더욱 바람 직 하지 않 고 클 라 이언 트 프로그램 이 방대 하고 유지 하기 어 려 울 것 이다.만약 에 선택 할 수 있 는 알고리즘 이 대량으로 존재 하면 문제 가 더욱 심각 해 질 것 이다.
예 를 들 어 설명:
1.여행:우 리 는 자전거,자동차,기차,비행 기 를 탈 수 있 는 몇 가지 전략 을 고려 할 수 있 습 니 다.모든 전략 은 같은 결 과 를 얻 을 수 있 지만 서로 다른 자원 을 사용 했다.
전략 을 선택 하 는 근 거 는 비용,시간,도 구 를 사용 하 는 것 과 모든 방식 의 편리 정도 이다.
2.한 쇼핑 몰 에서 노동절 에 행 사 를 했 기 때문에 도서 류 상품 은 구 매 금액 에 따라 다음 과 같은 할인 전략 을 한다.
1,구 매 만 199 원 할인
2,구 매 만 399 원 할인
3.599 위안 이상 구 매 시 30%할인 해 드 립 니 다.
function BookStrategy() {
this.calcPrice = function( price ) {
console.log(" = " + price);
}
}
function BookCalc9Strategy() {
this.calcPrice = function( price ) {
console.log(" :"+ price +"; 9 :" + (price * 0.9));
}
}
function BookCalc8Strategy() {
this.calcPrice = function( price ) {
console.log(" :"+ price +"; 8 :" + (price * 0.8));
}
}
function BookCalc7Strategy() {
this.calcPrice = function( price ) {
console.log(" :"+ price +"; 7 :" + (price * 0.7));
}
}
function PriceCalc( _strategy ) {
this.strategy = _strategy;
this.getPrice = function( price ) {
return this.strategy.calcPrice( price );
}
}
function Client() {
var price = 100;
var priceCalc = null;
if ( 199 <= price && price < 399 ) {
priceCalc = new PriceCalc(new BookCalc9Strategy());
} else if ( 399 <= price && price < 599 ) {
priceCalc = new PriceCalc(new BookCalc8Strategy());
} else if ( 599 <= price ) {
priceCalc = new PriceCalc(new BookCalc7Strategy());
} else {
priceCalc = new PriceCalc(new BookStrategy());
}
priceCalc.getPrice(price);
}
Client();
실행 결과:더 많은 자 바스 크 립 트 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,,,,,,,,,,,
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.