>웹 프론트엔드 >JS 튜토리얼 >JS 전략 패턴 사용에 대한 자세한 설명

JS 전략 패턴 사용에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-03-23 13:55:591876검색

이번에는 JS 전략 모드 사용에 대한 자세한 설명을 가져오겠습니다. JS 전략 모드 사용 시 주의 사항은 무엇인가요?

전략 패턴의 개념 참조:

우리는 소프트웨어 개발에서 종종 비슷한 상황에 직면하게 됩니다. 특정 기능을 구현하기 위해 다양한 알고리즘이나 전략을 선택할 수 있습니다. 이 기능을 완성하세요. .

검색, 정렬 등과 ​​같은 일반적인 방법은 클래스에 하드 코딩하는 것입니다. 여러 검색 알고리즘을 제공해야 하는 경우 이러한 알고리즘을 클래스에 작성하고 여러 메서드를 제공할 수 있습니다. 각 방법은 특정 검색어에 해당합니다. 검색 알고리즘; 물론 이러한 검색 알고리즘은 통합된 방법으로 캡슐화될 수도 있으며 if...else...또는 케이스 및 기타 조건 판단문을 통해 선택할 수 있습니다.

이 두 가지 구현 방법을 하드 코딩이라고 할 수 있습니다. 새로운 검색 알고리즘을 추가해야 하는 경우 캡슐화된 알고리즘 클래스의 소스 코드를 수정해야 하며, 검색 알고리즘을 변경하는 경우 클라이언트 호출도 수정해야 합니다. 암호.

이 알고리즘 클래스에는 수많은 검색 알고리즘이 캡슐화되어 있습니다. 이러한 유형의 코드는 더 복잡하고 유지 관리가 어렵습니다. 이러한 전략을 클라이언트에 포함하면 클라이언트 프로그램이 커지고 유지 관리가 어려워지기 때문에 문제가 더욱 심각해집니다.

예:

1. 여행: 자전거 타기, 자동차 타기, 기차 타기, 비행기 타기 등 여러 가지 전략을 고려할 수 있습니다. 각 전략은 동일한 결과를 달성하지만 서로 다른 리소스를 사용합니다.

비용, 시간, 도구, 각 방법의 편의성을 바탕으로 전략을 선택하세요.

2. 메이데이를 맞이하여 쇼핑몰에서 도서상품은 구매금액에 따라 아래와 같은 할인전략을 시행하였습니다

1. 199위안 이상 구매시 10% 할인
2. 399위안 이상, 20% 할인
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();

운영 결과:

이 기사의 사례를 읽으신 후 방법을 익히셨을 것입니다. PHP 중국어 웹사이트의 다른 관련 기사도 주목해주세요!

추천 도서:

날짜 선택기 사용 방법

mixin의 상위 수준 구성 요소 사용에 대한 자세한 설명

Vue.js에서 ejsExcel 템플릿 사용

위 내용은 JS 전략 패턴 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.