이 기사에서는 Java 디자인 패턴의 원리와 사용에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
정책 패턴은 일련의 알고리즘을 정의하고 각 알고리즘을 캡슐화하여 서로 교체 할 수 있습니다. 정책 패턴을 사용하면 알고리즘이이를 사용하는 고객과 독립적으로 변경 될 수 있습니다. 그중에서도 JDK의 TreeSet 클래스와 TreeMap 클래스는 정책 패턴을 사용합니다. 이 두 클래스는 분류 된 컬렉션 클래스이며 정렬 규칙은 정책 패턴에 정의 된 일련의 알고리즘과 동일하며 컬렉션 클래스는 사용자가 사용할 정책 패턴의 환경 클래스와 같습니다. 트리 셋과 트리 맵이 분류된다는 것을 아는 것만 알고 있습니다. 정렬하는 방법에 대해서는 분류 알고리즘에 의해 결정됩니다.
전략 모델은 추상 정책 역할, 특정 정책 역할 및 환경 역할의 세 부분으로 구성됩니다.
추상 정책 역할 : 일반적으로 인터페이스 또는 초록 클래스에 의해 구현되는 정책 클래스.
특정 전략 역할 : 초록 전략 클래스가 구현되고 관련 알고리즘 및 동작이 포장됩니다.
환경 역할 : 정책 클래스에 대한 참조를 보유하고 결국 고객에게 호출됩니다.
간단한 정책 패턴 코드 예는 다음과 같습니다.
1. 초록 전략 역할 : 인터페이스 전략 정의.
패키지 com.test;/** * 전략 패턴 초록 역할 * @Author Zhouwen * */public interface {public int calculation (int a, int b);}2. 특정 전략 역할 : 전략 인터페이스 구현. 이 예에서는 첨가, 뺄셈, 곱셈 및 분할의 작동이 구현됩니다.
패키지 com.test;/*** 정책 모드 특정 전략 클래스* 추가 작업 구현* @Author Zhouwen**/public class addStrategy emptorments {@override public int calculate (int a, int b) {return a + b; }} 패키지 com.test;/*** 정책 모드 특정 전략 클래스* 뺄셈 운영 구현* @Author Zhouwen**/public class subtrategrategy 구현 전략 {@override public int calculation (int a, int b) {return a -b; }} 패키지 com.test;/** * 정책 모드 특정 전략 클래스 * 곱셈 작업 구현 * @author Zhouwen * */public class multiplystragety emptory {@override public int calculate (int a, int b) {return a * b; }} 패키지 com.test;/*** 정책 모드 특정 전략 클래스* 구현 부서 운영* @author Zhouwen**/public class dividestrategy emptory {@override public int calculate (int a, int b) {return a/b; }}3. 환경 역할 : 환경 역할에서 추상적 인 역할 참조를 정의하고 클라이언트가 호출 할 수있는 계산 방법을 노출시킵니다.
패키지 com.test;/** * 정책 모드 환경 클래스 * @author Zhouwen * */public class 환경 {개인 전략 전략; 공공 환경 (전략 전략) {this.strategy = 전략; } // 정책을 변경하는 데 사용하여 공개 void setstrategy (전략 전략) {this.strategy = 전략; } 공개 전략 getStrategy () {반환 전략; } // 클라이언트가 공개 int 계산 (int a, int b)을 호출 할 수 있도록 컴퓨팅 인터페이스를 노출시킵니다. }}4. 마지막으로 클라이언트 코드를 작성하십시오.
패키지 com.test; public class client {public static void main (String [] args) {addStrategy addStrategy = new addStrategy (); 환경 환경 = 새로운 환경 (addStrategy); System.out.println (Environment.Calculate (3, 4)); SUPTRATERGYGY 기판 = 새로운 SUPTRATSTRATEGY (); Environment.SetStrategy (기질); System.out.println (Environment.Calculate (3, 4)); MultiplyStragety MultipllyStrategy = New MultiplyStragety (); Environment.SetStrategy (MultiplyStrategy); System.out.println (Environment.Calculate (3, 4)); dividestrategy dividestrategy = 새로운 dividestrategy (); Environment.SetStrategy (Dividestrategy); System.out.println (Environment.Calculate (3, 4)); }}요약 :
클라이언트의 System.out.println(environment.calculate(3, 4)); 이 코드는 어떤 구현 클래스가 호출되는지 모릅니다. 특정 정책 클래스가 환경 역할에 전달 된 것을 알면서만 전화 할 수있는 클래스를 알고 있습니다. 이를 통해 클라이언트와 특정 정책 알고리즘의 분리를 달성하여 프로그램을 쉽게 전환, 이해 및 확장 할 수 있습니다.
전략 모델의 장점과 단점 :
이점:
1. 정책 패턴의 목적은 각 알고리즘을 알고리즘 세트에 대한 공통 인터페이스로 독립 클래스로 캡슐화하여 서로 대체 할 수 있도록하는 것입니다. 예제에 제공된대로 정책은 설정 메소드로 대체됩니다.
2. 정책 패턴을 사용하면 클라이언트에 영향을 미치지 않고 알고리즘이 변경 될 수 있습니다. 정책 패턴을 사용하여 환경과 동작을 분리하십시오.
3. 환경 클래스는 동작 클래스를 유지하고 쿼리하는 일을 담당하며 특정 전략에 다양한 알고리즘이 제공됩니다. 알고리즘과 환경은 독립적이므로 알고리즘의 수정은 환경과 클라이언트에 영향을 미치지 않습니다.
결점:
1. 고객은 모든 정책 클래스를 알고 자체 재량에 따라 사용할 정책 클래스를 결정해야합니다.
2. 많은 전략을 유발할 것입니다.
더 많은 Java 관련 컨텐츠를 위해이 사이트에 관심이있는 독자는 "Java 객체 지향 프로그래밍에 대한 소개 및 고급 튜토리얼", "Java 데이터 구조 및 알고리즘에 대한 자습서", "Java Operation Dom Node Skills 요약", "Java 파일 및 디렉토리 운영 기술 요약"및 "Java Cache Cache 운영 기술 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.