이 기사에서는 쇼핑몰 프로모션 제품의 문제를 해결하기 위해 Java가 전략 모드 사용에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
패턴 정의
정책 모드 : 일련의 알고리즘을 정의하고 각 알고리즘을 캡슐화하며 상호 교환 적으로 사용할 수 있으며 정책 모드를 사용하면 알고리즘이 사용하는 고객 애플리케이션과 독립적으로 변경 될 수 있습니다.
두 번째 모드의 예
1 패턴 분석
우리는이 모델을 설명하기 위해 쇼핑몰 프로모션 제품을 빌립니다.
2 정책 모드 정적 클래스 다이어그램
3 코드 예제
3.1 정책 인터페이스-장관 생성
package com.demo.strategy;/** * 정책 인터페이스 * * @author */public interface istrategy {/** * 실제 가격을 계산하는 방법 * * @param 소비 가격 * 소비 금액 * @return */public doubleprice (double supctionprice);}3.2 20% 할인 홍보 전략-재사용
패키지 com.demo.strategy;/** * 제품 프로모션 전략 * * @author * */공개 클래스 Rebatestrategy Ampess istrategy {Private Final Double Rate; / *** 구성 방법 설정 할인율*/ public rebatestrategy () {this.rate = 0.8; } / ** * 실제 가격 방법을 계산 * * @param 소비 가격 * 소비량 * @return * / public doubleprice (double succumentprice) {return succientprice * this.rate; }}3.3 1000 이상의 유안에 대한 200 분 씩 홍보 전략, 환원 증류
패키지 com.demo.strategy;/** * 1000 이상의 제품 프로모션 전략을 구매할 경우 200 꺼짐 * * @author */public class redestrategy emplements istrategy {/** * 실제 가격을 계산하는 방법 * * @param 소비 가격 * 소비 금액 * @return */public double -realPrice (Double ConsumptionPrice) {if (cubust> =) {100; } else {return 소비 가격; }}}200 개가 넘는 유안 프로모션 스트레이트에 대한 홍보 전략 3.4 20% 할인
PACKED COM.DEMO.STRATEGY;/** * 200 이상, 200 이상의 제품 촉진 전략에 대한 20% 할인 200 * * @Author * */Public Class PromotionalStrategy emplications istrategy {/** * 실제 가격을 계산하는 방법 * @param 소비 금액 * @retmption */public doubleprise (복귀) {if (소비자> if) {소비자> if (소비). (소비자 -200) * 0.8; } else {return 소비 가격; }}}3.5 컨텍스트 생성
package com.demo.context; import java.math.bigdecimal; import com.demo.strategy.istrategy;/** * 컨텍스트 환경 * * @author */public class context {// 현재 정책 개인 istrategy 전략; // 현재 정책을 설정하여 공개 void setStrategy (istrategy 전략) {this.strategy = 전략; } // 전략을 사용하여 가격을 계산하기 위해 전략을 사용하여 공개 이중 cul (double succumentprice) {// 특정 제품 촉진 전략을 사용하여 실제 소비량을 얻으려면 이중 realPrice = this.strategy.realPrice (소비자); // 소수점 이후 1 자리를 형식화합니다. 즉, 각도에 정확합니다. Bd = Bd.SetScale (1, bigdecimal.round_down); return bd.doublevalue (); }}3.6 소비자 쇼핑 및 소비 고객
패키지 com.demo; import java.util.random;/** * 클라이언트 응용 프로그램 * * @author */public class client {/** * @param args */public static void main (string [] args) {// up and down 환경 객체의 인스턴스 생성 // context context = new context (); // 랜덤 번호 개체 random random = new random (); for (int i = 0; i <10; i ++) {// 임의 숫자를 생성하는 방법 int x = random.nextint (3)를 사용하는 홍보 전략을 결정합니다. // 소비자 가격은 또한 임의의 숫자 (0이 될 수 없음)로 생성됩니다. Double SopcomptionPrice = 0; while ((소비 프리스 = random.nextint (2000)) == 0) {} double realPrice = 소비 프리릭; 스위치 (x) {사례 0 : // 제품 // 컨텍스트 .SetStrategy (new Rebatestrategy ()); RealPrice = 소비 가격 * 0.8; 부서지다; 사례 1 : // 200 이상의 제품 20% 할인 // Context.SetStrategy (New PromotionalStrategy ()); if (소비자> 200) {RealPrice = 200 + (소비자 -200) * 0.8; } 부서지다; 사례 2 : // 1000 이상의 구매에 대한 200 분/ // context.setStrategy (new redestrategy ()); if (소비자> = 1000) {realPrice = 소비 프리즈 -200; } 부서지다; } system.out.print ( "【" + (x == 0? "200 개 이상의 구매의 경우 20% 할인 : (x == 1?"1000 이상 구매의 경우 20% 할인 : "")) + "】 제품 :"); System.out.println ( "원래 가격 :" + 소비 가격 + " - 할인 후 가격 :" + RealPrice); }}}4 실행 결과
【1000 이상의 구매의 경우 200 ~ 5 개 제품 : 원래 가격 : 908.0- 할인 후 가격 : 908.0
1000 개 이상의 구매에 대한 200 ~ 5 개 제품 : 원래 가격 : 1129.0- 할인 후 가격 : 929.0
1000 개 이상의 구매에 대한 200 ~ 1000 개 제품 : 원래 가격 : 829.0- 할인 후 가격 : 829.0
[20% 할인] 제품 : 원래 가격 : 518.0- 할인 후 가격 : 414.4000000000000003
【1000 개 이상의 구매의 경우 200 핸드 오프 제품 : 원래 가격 : 1230.0- 할인 후 가격 : 1030.0
【20% 할인 off 제품 : 원래 가격 : 106.0- 할인 후 가격 : 84.8000000000000001
【1000 개 이상의 구매의 경우 200 핸드 오프 제품 : 원래 가격 : 1134.0- 할인 후 가격 : 934.0
[200 이상의 부품의 경우 20% 할인] 제품 : 원래 가격 : 664.0- 할인 후 가격 : 571.2
【1000 개 이상의 구매의 경우 200 핸드 오프 제품 : 원래 가격 : 564.0- 할인 후 가격 : 564.0
【1000 개 이상의 구매의 경우 200 핸드 오프 제품 : 원래 가격 : 730.0- 할인 후 가격 : 730.0
이 패턴의 디자인의 세 가지 원리
1 "개방형"원칙
2 단일 책임 원칙
4 개의 사용법
1 여러 클래스의 성능 동작이 다르고 런타임에 특정 실행 동작을 동적으로 선택해야합니다.
2 다른 상황에서 다른 전략을 사용해야하거나 앞으로 다른 방식으로 전략이 구현 될 수 있습니다.
3 특정 전략의 구현 세부 사항을 숨길 필요가있는 경우 각 특정 전략은 서로 독립적입니다.
4 클래스에서 여러 행동이 발생하고 여러 조건부 분기가 여러 행동의 사용을 판단하기 위해 작업에 사용되는 경우, 정책 패턴을 사용하여 각 조건부 지점의 동작을 특정 전략에 이식 할 수 있습니다.
5- 스트레이트 모드 정적 클래스 다이어그램
더 많은 Java 관련 컨텐츠를 위해이 사이트에 관심이있는 독자는 "Java 객체 지향 프로그래밍에 대한 소개 및 고급 튜토리얼", "Java 데이터 구조 및 알고리즘에 대한 자습서", "Java Operation Dom Node Skills 요약", "Java 파일 및 디렉토리 운영 기술 요약"및 "Java Cache Cache 운영 기술 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.