이 기사에서는 Java 정책 패턴의 정의와 사용에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
1. 정의 :
일련의 알고리즘을 정의하고 하나씩 캡슐화하고 서로 대체 할 수 있도록합니다.
2. 장점 :
(1) 컨텍스트와 특정 전략은 느슨하게 결합되므로 컨텍스트는 전략 인터페이스 클래스를 구현하는 데 사용하려는 인스턴스 만 알아야하지만 어떤 클래스인지 알 필요는 없습니다.
(2) 정책 모델은 개방 및 폐쇄의 원리를 충족합니다. 새 특정 클래스를 추가 할 때는 컨텍스트 클래스의 코드를 수정할 필요가 없습니다. 컨텍스트는 새로운 특정 정책의 사례를 참조 할 수 있습니다.
III. 예:
다음은 질문을 통해 전략 모델에 대한 자세한 설명입니다.
실험 요구 사항 :
Xiao Ding은 알리바바의 프로그래머입니다. 오늘날 프로젝트 관리자는 그에게 수업 정의를 주었다.
공공 계급 직원 {int id; 문자열 이름; int age;}Xiao Ding은 이것이 번호 ID, 이름, 연령 등을 포함하여 작업자의 정의가 아니라는 것을 알았습니다.
매니저는 직원 그룹 중에서 가장 오래된 기능을 찾을 수있는 기능을 작성해야한다고 말했습니다. 메소드 선언은 다음과 같습니다.
근로자 검색 작업자 (목록 <worker> 근로자);
매개 변수 List<Worker> workers 이 작업자 배치 데이터입니다. 가장 오래된 작업자가 발견되면 작업자 대상이 반환됩니다. 근로자에게 노드가없는 경우 NULL을 반환하십시오.
답변:
1. 전략
정책 모드 에서이 인터페이스는 WorkStrategy라는 이름으로 명명되었습니다 (특정 질문에서는 특정 질문에 따라 이름을 지정할 수 있음). 코드는 다음과 같습니다.
WorksTrategy.java
import java.util.list; public interface Workstrategy {public Worker Ageaverage (list <worker> list);}2. 맥락
상황 지향 정책은 모두 인터페이스 지향 클래스입니다. 코드는 다음과 같습니다.
Maxage.java
java.util.list; 공개 클래스 Maxage {Workstrategy Workstrategy; public void setworkstrategy (Workstrategy Workstrategy) {this.workstrategy = Workstrategy; } 공공 작업자 GetFindMax (List <Worker> List) {if (Workstrategy! = null) return Workstrategy.ageeverage (list); else {return null; }}}3. 특정 전략
구체적인 전략은 Workstrategy 인터페이스 클래스를 구현하는 것입니다. 즉, 인터페이스의 추상 작업자는 다시 작성해야합니다.
Ageaverage (List <Worker> 목록) 메소드
코드는 다음과 같습니다.
전략 maxage.java
import java.util.list; 공개 클래스 전략 maxage는 Workstrategy {@override public Worker Ageaverage (list <worker> list) {int fs [] = new int [list.size ()]; int maxage = 0; for (int j = 0; j <list.size (); j ++) {fs [j] = list.get (j) .getage (); if (fs [maxage] <= fs [j]) {maxage = j; }} return list.get (maxage); }}4. 정책 모드 사용
Application.java
import java.util.arraylist; import java.util.list; public class 응용 프로그램 {public static void main (String [] args) {list <Worker> list = new ArrayList <> (); list.add (새로운 노동자 (1, "Zhang San", 30); list.add (새 노동자 (2, "li si", 40)); list.add (새 노동자 (3, "Wang Wu", 33)); Maxage Fourdage = New Maxage (); Foundage.setworkstrategy (new StrategyMaxage ()); 작업자 findw = furnage.getFindMax (List); System.out.println ( "wulin.com 테스트 결과 :"); System.out.println ( "가장 오래된 작업자 :"+findw.getId ()+""+findw.getName ()+""+findw.getage ()); }} 클래스 작업자 {int id; 문자열 이름; int 연령; public int getid () {return id; } public void setid (int id) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public int getage () {반환 연령; } public void 설정 (int Age) {this.age = age; } 공공 작업자 (int id, 문자열 이름, int age) {super (); this.id = id; this.name = 이름; this.age = age; } public Worker () {super (); // TODO 자동 생성 생성자 스텁}}5. 작동 결과 :
더 많은 Java 관련 컨텐츠를 보려면이 사이트에 관심이있는 독자는 "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약 및"Java Cache Cache Operation Tips "의 주제를 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.