(16) 명령 모드 - 코드 구현
소개하다.
개념: 여러 대상이 요청을 처리할 수 있는 기회를 주어 요청의 발송자와 수신자 간의 결합 관계를 피한다.이 대상들을 하나의 체인으로 연결하고, 이 체인을 따라 요청을 전달하며, 대상이 그것을 처리할 때까지.
응용 장면: 장면을 처리하는 업무를 자주 늘린다. 예를 들어 간식 상품을 처리하는 유형, 끊임없이 증가하는 간식이 있기 때문에 간식을 처리하는 방법을 계속 늘려야 한다. 결합도가 너무 높다.결합도를 낮추기 위해 직책 체인 모드를 사용합니다.
이점: 유연한 확장.구조가 뚜렷하다.
코드:
//프로세서의 인터페이스 정의
package note.com.chain;
public interface Handler {
public void doHandler(String label);
}
//다양한 상황의 처리 실현을 정의한다
package note.com.chain;
/**
*
* @author lxz
*
*/
public class AnimalChain implements Handler{
public void doHandler(String label) {
System.out.println(label+": ");
}
}
package note.com.chain;
/**
*
* @author lxz
*
*/
public class FishChain implements Handler{
public void doHandler(String label) {
System.out.println(label+": ");
}
}
package note.com.chain;
/**
*
* @author lxz
*
*/
public class InsectChain implements Handler{
public void doHandler(String label) {
System.out.println(label+": ");
}
}
package note.com.chain;
/**
*
* @author lxz
*
*/
public class PersonChain implements Handler{
public void doHandler(String label) {
System.out.println(label+": ");
}
}
//제어 프로세서의 분배 클래스 구현
package note.com.chain;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author lxz
*
*/
public class MainChain implements Handler{
public static final String FISH = "fish";
public static final String ANIMAL = "animal";
public static final String INSECT = "insect";
public static final String PERSON = "person";
private Map<String,Handler> chains = new HashMap<String,Handler>();
public MainChain(){
chains.put(FISH, new FishChain());
chains.put(ANIMAL, new AnimalChain());
chains.put(INSECT, new InsectChain());
chains.put(PERSON, new PersonChain());
}
public void doHandler(String label) {
Handler handler = chains.get(label);
if(handler!=null){
handler.doHandler(label);
}
}
}
//테스트 클래스
package note.com.chain;
/**
*
* @author lxz
*
*/
public class ChainTest {
public static void main(String[] args) {
System.out.println(" ");
String thing1 = MainChain.INSECT;//
String thing2 = MainChain.ANIMAL;//
new MainChain().doHandler(thing1);
new MainChain().doHandler(thing2);
}
}
//결과
나 여기 처리해야 할 생물이 하나 있다. insect: 내 곤충 프로세서가 처리한다. animal: 내 동물류 프로세서가 처리한다.
이로써 모든 대기 처리는 MainChain 입구에서 처리되므로 구체적으로 누가 처리했는지 알 필요가 없다.또 새로 추가된 종은 처리해야 할 때 핸들러의 실현을 확장하고 이를 마인체인으로 관리하면 된다.예에서 실제 처리 클래스를MainChain과 분리하지 않았기 때문에 이렇게 하는 것도 매우 간단하다. 예를 들어 프로필을 불러오는 방식이 매우 많다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.