Strategy 모드 사용 배우 기

3191 단어 알고리즘Excel
최근 에 만 든 재무 프로그램 은 전략 모델 을 사 용 했 습 니 다. 그 중 하 나 는 프로그램 이 몇 개의 재무 엑셀 표를 불 러 와 서 데 이 터 를 처리 한 후에 새로운 표 에 출력 하 는 것 입 니 다. 그 중에서 처리 해 야 할 표 는 형식 이 다 르 기 때문에 사용 하지 않 는 방법 으로 읽 어야 합 니 다. 이때 전략 모델 을 생각 하 니 장면 이 적당 하 다 고 생각 합 니 다.
다음은 전략 모드 를 어떻게 사용 하 는 지 설명 한다.
부류
표를 불 러 오 는 부모 클래스 를 작성 하여 공용 변수 와 방법 을 정의 합 니 다.
 
public abstract class LoadDataStrategy {

	public LoadDataStrategy() {
		super();
	}

//    
	public TJFinanceData loadData(String filePath) {
		TJFinanceData tjfd = new TJFinanceData();
		try {
			POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath));
			HSSFWorkbook wb = new HSSFWorkbook(fs);
			//      .
			}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return tjfd;
	}

//     
	public abstract List loadProjectData(HSSFSheet sheet);

}

하위 클래스
이때 의 하위 클래스 는 서로 다른 재무 표를 대상 으로 하 는 서로 다른 알고리즘 이다. 다음은 그 중의 하나 로 서로 다른 표 에 따라 서로 다른 하위 클래스 를 쓸 수 있다.

public class FPTSBLoadData extends LoadDataStrategy {
	public FPTSBLoadData() {
		super();
		// TODO Auto-generated constructor stub
	}
	
//         
	public TJFinanceData loadData(String filePath) {
	…..
	}
	 //    
	public List loadProjectData(HSSFSheet sheet) {
		….
	}
}

3. 알고리즘 선택 클래스
클 라 이언 트 가 자 유 롭 게 알고리즘 을 선택 할 수 있 도록 제공 합 니 다.
 public class LoadDataSolve {
	
//    
	private LoadDataStrategy strategy;
	
//            
	public LoadDataSolve(String className) {
		try {
			Class LoadData = Class.forName(className);
			this.strategy = (LoadDataStrategy) LoadData.newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//        
	public LoadDataSolve(LoadDataStrategy strategy) {
		this.strategy = strategy;
	}
	
	//    
	public TJFinanceData loadData(String filePath) {
		return strategy.loadData(filePath);
	}
	
//    
	public void changeAlgorithm(LoadDataStrategy newAlgorithm) {
		this.strategy = newAlgorithm;
	}

} 

호출

public class TestLoad{
…………………
public TJFinanceData testLoadData(String filePath){
//  FPTSBLoadData  
TJFinanceData solver= new LoadDataSolve( “com.company.financel.dataload.FPTSBLoadData”);
TJFinanceData fd = solver.loadData(filePath);
Return fd;
}
………

}

인터넷 발췌 문:
정책 모드 는 실행 기간 에 알고리즘 을 자 유 롭 게 전환 할 수 있 는 목적 을 달성 했다.
실제 전체 Strategy 의 핵심 부분 은 추상 적 인 사용 이다. Strategy 모델 을 사용 하면 사용자 가 변화 가 필요 할 때 수 정 량 이 적 고 빠 른 속도 이다. Strategy 와 Factory 는 어느 정도 유사 하 다. Strategy 는 상대 적 으로 간단 하고 이해 하기 쉬 우 며 운영 시간 에 자 유 롭 게 전환 할 수 있다.Factory 는 대상 을 만 드 는 데 중점 을 두 고 있 습 니 다.
Strategy 는 다음 장소 에 적합 합 니 다.
1. 다른 형식 으로 파일 저장 하기;
2. 서로 다른 알고리즘 으로 파일 압축 하기;
3. 서로 다른 알고리즘 으로 이미지 캡 처 하기;
4. 같은 데 이 터 를 다른 형식 으로 출력 하 는 도형, 예 를 들 어 곡선 이나 구조 bar 등

좋은 웹페이지 즐겨찾기