상용 디자인 모델 총화 - 책임 체인 모델

상용 디자인 모델 총화 - 책임 체인 모델
다 중 스 레 드 프로 그래 밍 모델 에서 책임 체인 모델 은 자주 사용 하 는 모델 로 책임 체인 모델 은 하나의 임 무 를 작은 독립 된 임무 단원 으로 분해 하여 전체 임 무 를 한눈 에 알 수 있다.
한 파충류 가 특정한 페이지 를 기어 오 르 는 것 을 예 로 들 면 url 의 스케줄 은 파충류 가 관리 하 는 것 이 아니 라 전문 적 인 urldb 모듈 로 이 루어 진다 고 가정 하면 한 페이지 의 기어 오 르 기 는 다음 과 같은 몇 개의 작은 하위 임무 로 나 눌 수 있다.웹 페이지 다운로드 하기;웹 페이지 분석 하기;현재 페이지 에서 새로 발 견 된 링크 를 urldb 에 다시 씁 니 다.임 무 를 작은 임무 로 분해 한 후에 모든 작은 임무 의 출력 은 다음 임무 의 입력 이 고 전체 프레임 워 크 는 명확 하 게 할 수 있다.로그 에 보조 되 는 정 보 는 문제 가 발생 했 을 때 문제 가 발생 한 곳 을 쉽게 찾 을 수 있 습 니 다.
잔말 말고 코드 를 보 세 요.
Processor.java
public abstract class Processor {

	private Processor next;
	protected int delta;
	public abstract int doProcess(int base);
	
	public void setNext( Processor next ){
		this.next = next;
	}
	
	public void process(int base){
		int result = doProcess(base);
		if( null != next ){
			next.process(result);
		}
	}
}

Processor Chain Factory, 작은 임 무 를 조합 하 는 일 을 맡 고 있 습 니 다.
package zl.study.designpattern.respchain;

public class ProcessorChainFactory {

	public static Processor assembleChain( Processor ...processor){
		Processor head = null;
		Processor pre = null;
		if( null == processor || 0 >= processor.length){
			return head;
		}
		
		for(int i = 0; i< processor.length; i ++){
			Processor current = processor[i];
			if( i == 0){
				head =current;
			}
			if( null != pre){
				pre.setNext(current);
			}
			pre = current;
		}
		return head;
	}
	
}

예제 프로그램
산수 문 제 를 풀다
Processor Add. 자바 덧셈
package zl.study.designpattern.respchain.test;

import zl.study.designpattern.respchain.Processor;

public class ProcessorAdd extends Processor{

	public ProcessorAdd(int delta){
		this.delta = delta;
	}
	
	@Override
	public int doProcess(int base) {
		int result = base + delta;
		System.out.println(result);
		return result;
	}
}

ProcessorSub. 자바 감법
package zl.study.designpattern.respchain.test;

import zl.study.designpattern.respchain.Processor;

public class ProcessorSub extends Processor{

	public ProcessorSub( int delta){
		this.delta = delta;
	}
	@Override
	public int doProcess(int base) {
		int result = base -delta;
		System.out.println(result);
		return result;
	}
}

주 프로그램
package zl.study.designpattern.respchain.test;

import zl.study.designpattern.respchain.ProcessorChainFactory;

public class RespChainTest {

	public static void main(String args[]){
		ProcessorAdd add = new ProcessorAdd(1);
		ProcessorSub sub = new ProcessorSub(2);
		
		ProcessorChainFactory.assembleChain(add,sub);
		add.process(1);
	}
}

좋은 웹페이지 즐겨찾기