Java 디자인 모드의 책임 체인 모드
5814 단어 Java 디자인 모드
Java 디자인 모드의 책임 체인 모드
전언
시스템에 여러 개의 대상이 같은 요청을 처리할 수 있다면 직책 체인 모드를 통해 이 요청을 처리하는 대상을 하나의 체인으로 연결시켜 요청이 이 체인을 따라 전달되도록 할 수 있다.체인의 대상이 이 요청을 처리할 수 있다면 처리하고, 그렇지 않으면 요청을 하가에 전달하여 처리한다.직책 체인 모델은 요청의 발송자와 수신자를 결합시킬 수 있고 클라이언트는 요청의 처리 세부 사항과 전달 과정에 관심을 두지 않고 요청을 직책 체인에 제출하면 된다.GoF 디자인 모드에는 이름, 정의가 다음과 같이 정리된 11가지 비헤이비어 디자인 모드가 있습니다.
모드 이름
정의
책임 체인 모드(Chain of Responsibility Pattern)
한 요청의 발송자와 수신자를 결합시키지 않고 여러 대상이 요청을 처리할 수 있도록 합니다.요청을 받은 대상을 하나의 체인으로 연결하고, 이 체인을 따라 요청을 전달합니다. 대상이 그것을 처리할 수 있을 때까지.
명령 모드(Command Pattern)
하나의 요청을 하나의 대상으로 봉하여 서로 다른 요청으로 고객을 매개 변수화하고 요청에 대해 줄을 서거나 요청 로그를 기록하며 취소 가능한 조작을 지원한다
해석기 모드(Interpreter Pattern)
언어를 정하고 문법의 표현을 정의하며 해석기를 정의합니다. 이 해석기는 이 표현을 사용하여 언어의 문장을 해석합니다
교체기 모드(Iterator Pattern)
집합 대상의 각 요소를 순서대로 접근할 수 있는 방법을 제공하며, 그 대상의 내부 표시를 폭로하지 않아도 된다
브로커 모드(Mediator Pattern)
일련의 대상의 상호작용을 봉인하기 위해 대상을 정의합니다.중개자 모델은 각 대상 간에 현식적으로 상호 인용할 필요가 없게 하여 결합을 느슨하게 하고 그것들 간의 상호작용을 독립적으로 변화시킬 수 있다
의사록 모드(Memento Pattern)
봉인을 파괴하지 않는 전제에서 한 대상의 내부 상태를 포획하고 그 대상 이외에 이 상태를 저장하면 나중에 대상을 원래 저장한 상태로 복원할 수 있다
관찰자 모드(Observer Pattern)
대상 간의 일대다 의존 관계를 정의하여 대상 상태가 바뀔 때마다 관련 의존 대상이 알림을 받고 자동으로 업데이트됩니다
상태 모드(State Pattern)
객체의 내부 상태가 변경될 때 객체의 동작을 변경할 수 있습니다.대상이 클래스를 수정한 것 같습니다
정책 모드
일련의 알고리즘을 정의하여 모든 알고리즘을 봉인하고 서로 바꿀 수 있도록 한다. 전략 모델은 알고리즘이 자신의 고객을 독립적으로 사용해서 변화시킬 수 있도록 한다.
템플릿 메서드 모드(Template Method Pattern)
조작 중인 알고리즘의 구조를 정의하고 일부 절차를 하위 클래스로 연기합니다.템플릿 방법 모드는 하위 클래스가 하나의 알고리즘의 구조를 바꾸지 않고 이 알고리즘의 특정한 절차를 재정의할 수 있게 한다
방문자 모드(Visitor Pattern)
객체 구조에서 개별 요소에 작용하는 작업을 나타냅니다.방문자 모드는 사용자가 각 원소의 클래스를 바꾸지 않는 전제에서 이 원소에 작용하는 새로운 조작을 정의할 수 있도록 한다
본문
직책 체인은 하나의 직선, 하나의 고리 또는 하나의 나무 구조일 수 있다. 가장 흔히 볼 수 있는 직책 체인은 직선형이다. 즉, 일방적인 체인을 따라 요청을 전달하는 것이다.체인의 모든 대상은 요청 처리자이다. 직책 체인 모델은 요청 처리자를 하나의 체인으로 구성하고 요청을 체인을 따라 전달하게 한다. 체인의 처리자가 요청을 상응하는 처리를 한다. 클라이언트는 요청의 처리 세부 사항과 요청의 전달에 관심을 두지 않고 요청을 체인에 보내면 요청의 발송자와 요청의 처리자를 결합시킬 수 있다.이것이 바로 직책 체인 모델의 모델 동기다.
정의
정의는 다음과 같다. 직책 체인 모델: 한 요청의 발송자와 수신자를 결합시키지 않고 여러 대상이 요청을 처리할 수 있도록 한다.요청을 받은 대상을 하나의 체인으로 연결하고, 이 체인을 따라 요청을 전달합니다. 대상이 그것을 처리할 수 있을 때까지.Chain of Responsibility Pattern: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving objects and pass the request along the chain until an object handles it.
직책 체인 모델은 책임 체인 모델이라고도 하는데 이것은 일종의 대상 행위형 모델이다.
구조
직책 체인 모델은 두 가지 역할을 포함한다. (1)Handler(추상 프로세서): 요청을 처리하는 인터페이스를 정의하고 일반적으로 추상 클래스로 설계되며 구체적인 프로세서가 요청을 처리하는 방식이 다르기 때문에 추상 요청 처리 방법을 정의한다.모든 처리자의 하가는 처리자이기 때문에 처리자 중에서 추상적인 처리자 유형의 대상을 하가에 대한 인용으로 정의하고 이 인용 처리자를 통해 하나의 체인을 만들 수 있다.(2)ConcreteHandler(구체적 처리자): 이것은 추상적 처리자의 하위 클래스로 사용자의 요청을 처리할 수 있다. 구체적인 처리자 클래스에서 추상적 요청 처리 방법을 실현했다. 요청을 처리하기 전에 해당하는 처리 권한이 있는지 판단하고 처리를 할 수 있으면 처리하고 그렇지 않으면 후계자에게 요청을 전달한다.요청한 전달을 위해 체인의 다음 대상에 접근할 수 있습니다.
이루다
직책 체인 모델의 핵심은 추상 처리자 클래스의 디자인에 있다. 추상 처리자의 전형적인 코드는 다음과 같다.public abstract class Handler{
//
protected Handler successor;
public void setSuccessor(Handler successor){
this.successor = successor;
}
public abstract void handleRequest(String request);
}
일반 처리자 클래스의 코드는 다음과 같습니다.public class ConcreteHandler extends Handler{
public void handleRequest(String request){
if( ){
//
}
else{
this.successor.handleRequest(request); //
}
}
}
주의해야 할 것은 직책 체인 모델은 직책 체인을 만드는 것을 책임지지 않고 직책 체인의 창설 업무는 반드시 시스템의 다른 부분에서 완성해야 한다.일반적인 클라이언트 코드는 다음과 같습니다.Handler handler1,handler2,handler3;
handler1 = new ConcreteHandlerA();
handler2 = new ConcreteHandlerB();
handler3 = new ConcreteHandlerC();
//
handler1.setSuccessor(handler2);
handler2.setSuccessor(handler3);
// ,
handler1.handleRequest(" ");
4. 순수와 불순의 직책 체인 모델
1. 순수한 직책 체인 모델
하나의 순수한 직책 체인 모델은 하나의 구체적인 처리자 대상이 두 행위 중 하나만 선택할 수 있도록 요구한다. 모든 책임을 지거나 하가에 책임을 떠넘기거나 특정한 구체적인 처리자 대상이 일부분이나 모든 책임을 진 후에 책임을 아래로 전달하는 상황이 발생하는 것을 허락하지 않는다.그리고 순수한 직책 체인 모델에서 하나의 요청이 특정한 처리자 대상에 의해 처리되어야 하는 경우.
2. 불순한 직책 체인 모델
불순한 직책 체인 모델에서 특정한 요청이 특정한 처리자에 의해 부분적으로 처리된 후에 아래로 전달되거나 특정한 처리자가 특정한 요청을 처리한 후에 이어서 처리자가 이 요청을 계속 처리할 수 있고 하나의 요청은 최종적으로 어떠한 처리자 대상에게 받아들여지지 않고 처리될 수 있다.
Java AWT 1.0의 이벤트 처리 모델에 불순한 직책 체인 모델을 적용했고 JDK는 1.1 이후 관찰자 모델로 이벤트를 처리했다.
5. 직책 체인 모델의 장단점과 적용 환경
장점
(1) 직책 체인 모델은 한 대상이 다른 어느 대상이 그 요청을 처리하는지 알 필요가 없다. 대상은 이 요청이 처리될 줄만 알면 된다. 수신자와 발송자는 상대방의 명확한 정보가 없고 체인 중의 대상은 체인의 구조를 알 필요가 없다. 사용자가 체인을 창설하고 시스템의 결합도를 낮춘다.(2) 요청 처리 대상은 후계자를 가리키는 인용만 유지해야 하고 모든 후보 처리자에 대한 인용을 유지하지 않아도 되며 대상 간의 상호 연결을 간소화할 수 있다.(3) 대상에게 직책을 분배할 때 직책체인은 더욱 유연성을 가져올 수 있고 운행할 때 이 체인을 동태적으로 증가하거나 수정함으로써 요청을 처리하는 직책을 증가하거나 변경할 수 있다.(4) 시스템에 새로운 구체적인 요청 처리자를 추가할 때 기존 시스템의 코드를 수정할 필요가 없고 클라이언트에서 체인을 다시 구축하면 된다는 점에서 개폐 원칙에 부합된다.
결점
(1) 요청이 명확한 수신자가 없기 때문에 반드시 처리될 것이라고 보장할 수 없고 이 요청은 체인의 끝까지 처리되지 않을 수 있다.하나의 요청도 직책 체인이 정확하게 설정되지 않아서 처리되지 않을 수도 있다.(2) 비교적 긴 직책 체인에 대해 요청한 처리는 여러 처리 대상과 관련될 수 있고 시스템 성능은 일정한 영향을 받을 수 있으며 코드 디버깅을 할 때 불편하다.(3) 체인을 잘못 구축하면 순환 호출을 초래하고 시스템이 사순환에 빠질 수 있다.
적용 환경
(1) 여러 개의 대상이 같은 요청을 처리할 수 있다. 구체적으로 어느 대상이 이 요청을 처리할 것인지 실행할 때 결정한다. 클라이언트는 요청을 체인에 제출하기만 하면 요청의 처리 대상이 누구인지, 어떻게 처리하는지 신경 쓸 필요가 없다.(2) 수신자를 명확하게 지정하지 않은 상태에서 여러 대상 중 하나에 요청을 제출한다.(3) 한 그룹의 대상 처리 요청을 동적으로 지정할 수 있다. 클라이언트는 직책 체인을 동적으로 만들어서 요청을 처리할 수 있고 체인에서 처리자 간의 선후 순서를 바꿀 수 있다.
상기 문자는 이라는 책에서 대량으로 발췌한 것으로 류웨이 선생님이 저술한 것이기 때문에 본고는 전재류에 넣어야 한다. 관심 있는 친구는 원서를 직접 읽을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 디자인 모드 - 플랜트 메소드 모드(2)
공장 방법 모델은 공장 모델로 약칭하여 창설형 모델의 일종에 속한다.
공장 방법 모델에서 공장 부류는 제품 대상의 공공 인터페이스를 만들고 공장 부류는 구체적인 제품 대상을 생성한다.공장 부류에서 제품류의 실례화 조...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
직책 체인은 하나의 직선, 하나의 고리 또는 하나의 나무 구조일 수 있다. 가장 흔히 볼 수 있는 직책 체인은 직선형이다. 즉, 일방적인 체인을 따라 요청을 전달하는 것이다.체인의 모든 대상은 요청 처리자이다. 직책 체인 모델은 요청 처리자를 하나의 체인으로 구성하고 요청을 체인을 따라 전달하게 한다. 체인의 처리자가 요청을 상응하는 처리를 한다. 클라이언트는 요청의 처리 세부 사항과 요청의 전달에 관심을 두지 않고 요청을 체인에 보내면 요청의 발송자와 요청의 처리자를 결합시킬 수 있다.이것이 바로 직책 체인 모델의 모델 동기다.
정의
정의는 다음과 같다. 직책 체인 모델: 한 요청의 발송자와 수신자를 결합시키지 않고 여러 대상이 요청을 처리할 수 있도록 한다.요청을 받은 대상을 하나의 체인으로 연결하고, 이 체인을 따라 요청을 전달합니다. 대상이 그것을 처리할 수 있을 때까지.Chain of Responsibility Pattern: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving objects and pass the request along the chain until an object handles it.
직책 체인 모델은 책임 체인 모델이라고도 하는데 이것은 일종의 대상 행위형 모델이다.
구조
직책 체인 모델은 두 가지 역할을 포함한다. (1)Handler(추상 프로세서): 요청을 처리하는 인터페이스를 정의하고 일반적으로 추상 클래스로 설계되며 구체적인 프로세서가 요청을 처리하는 방식이 다르기 때문에 추상 요청 처리 방법을 정의한다.모든 처리자의 하가는 처리자이기 때문에 처리자 중에서 추상적인 처리자 유형의 대상을 하가에 대한 인용으로 정의하고 이 인용 처리자를 통해 하나의 체인을 만들 수 있다.(2)ConcreteHandler(구체적 처리자): 이것은 추상적 처리자의 하위 클래스로 사용자의 요청을 처리할 수 있다. 구체적인 처리자 클래스에서 추상적 요청 처리 방법을 실현했다. 요청을 처리하기 전에 해당하는 처리 권한이 있는지 판단하고 처리를 할 수 있으면 처리하고 그렇지 않으면 후계자에게 요청을 전달한다.요청한 전달을 위해 체인의 다음 대상에 접근할 수 있습니다.
이루다
직책 체인 모델의 핵심은 추상 처리자 클래스의 디자인에 있다. 추상 처리자의 전형적인 코드는 다음과 같다.
public abstract class Handler{
//
protected Handler successor;
public void setSuccessor(Handler successor){
this.successor = successor;
}
public abstract void handleRequest(String request);
}
일반 처리자 클래스의 코드는 다음과 같습니다.
public class ConcreteHandler extends Handler{
public void handleRequest(String request){
if( ){
//
}
else{
this.successor.handleRequest(request); //
}
}
}
주의해야 할 것은 직책 체인 모델은 직책 체인을 만드는 것을 책임지지 않고 직책 체인의 창설 업무는 반드시 시스템의 다른 부분에서 완성해야 한다.일반적인 클라이언트 코드는 다음과 같습니다.
Handler handler1,handler2,handler3;
handler1 = new ConcreteHandlerA();
handler2 = new ConcreteHandlerB();
handler3 = new ConcreteHandlerC();
//
handler1.setSuccessor(handler2);
handler2.setSuccessor(handler3);
// ,
handler1.handleRequest(" ");
4. 순수와 불순의 직책 체인 모델
1. 순수한 직책 체인 모델
하나의 순수한 직책 체인 모델은 하나의 구체적인 처리자 대상이 두 행위 중 하나만 선택할 수 있도록 요구한다. 모든 책임을 지거나 하가에 책임을 떠넘기거나 특정한 구체적인 처리자 대상이 일부분이나 모든 책임을 진 후에 책임을 아래로 전달하는 상황이 발생하는 것을 허락하지 않는다.그리고 순수한 직책 체인 모델에서 하나의 요청이 특정한 처리자 대상에 의해 처리되어야 하는 경우.
2. 불순한 직책 체인 모델
불순한 직책 체인 모델에서 특정한 요청이 특정한 처리자에 의해 부분적으로 처리된 후에 아래로 전달되거나 특정한 처리자가 특정한 요청을 처리한 후에 이어서 처리자가 이 요청을 계속 처리할 수 있고 하나의 요청은 최종적으로 어떠한 처리자 대상에게 받아들여지지 않고 처리될 수 있다.
Java AWT 1.0의 이벤트 처리 모델에 불순한 직책 체인 모델을 적용했고 JDK는 1.1 이후 관찰자 모델로 이벤트를 처리했다.
5. 직책 체인 모델의 장단점과 적용 환경
장점
(1) 직책 체인 모델은 한 대상이 다른 어느 대상이 그 요청을 처리하는지 알 필요가 없다. 대상은 이 요청이 처리될 줄만 알면 된다. 수신자와 발송자는 상대방의 명확한 정보가 없고 체인 중의 대상은 체인의 구조를 알 필요가 없다. 사용자가 체인을 창설하고 시스템의 결합도를 낮춘다.(2) 요청 처리 대상은 후계자를 가리키는 인용만 유지해야 하고 모든 후보 처리자에 대한 인용을 유지하지 않아도 되며 대상 간의 상호 연결을 간소화할 수 있다.(3) 대상에게 직책을 분배할 때 직책체인은 더욱 유연성을 가져올 수 있고 운행할 때 이 체인을 동태적으로 증가하거나 수정함으로써 요청을 처리하는 직책을 증가하거나 변경할 수 있다.(4) 시스템에 새로운 구체적인 요청 처리자를 추가할 때 기존 시스템의 코드를 수정할 필요가 없고 클라이언트에서 체인을 다시 구축하면 된다는 점에서 개폐 원칙에 부합된다.
결점
(1) 요청이 명확한 수신자가 없기 때문에 반드시 처리될 것이라고 보장할 수 없고 이 요청은 체인의 끝까지 처리되지 않을 수 있다.하나의 요청도 직책 체인이 정확하게 설정되지 않아서 처리되지 않을 수도 있다.(2) 비교적 긴 직책 체인에 대해 요청한 처리는 여러 처리 대상과 관련될 수 있고 시스템 성능은 일정한 영향을 받을 수 있으며 코드 디버깅을 할 때 불편하다.(3) 체인을 잘못 구축하면 순환 호출을 초래하고 시스템이 사순환에 빠질 수 있다.
적용 환경
(1) 여러 개의 대상이 같은 요청을 처리할 수 있다. 구체적으로 어느 대상이 이 요청을 처리할 것인지 실행할 때 결정한다. 클라이언트는 요청을 체인에 제출하기만 하면 요청의 처리 대상이 누구인지, 어떻게 처리하는지 신경 쓸 필요가 없다.(2) 수신자를 명확하게 지정하지 않은 상태에서 여러 대상 중 하나에 요청을 제출한다.(3) 한 그룹의 대상 처리 요청을 동적으로 지정할 수 있다. 클라이언트는 직책 체인을 동적으로 만들어서 요청을 처리할 수 있고 체인에서 처리자 간의 선후 순서를 바꿀 수 있다.
상기 문자는 이라는 책에서 대량으로 발췌한 것으로 류웨이 선생님이 저술한 것이기 때문에 본고는 전재류에 넣어야 한다. 관심 있는 친구는 원서를 직접 읽을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 디자인 모드 - 플랜트 메소드 모드(2)공장 방법 모델은 공장 모델로 약칭하여 창설형 모델의 일종에 속한다. 공장 방법 모델에서 공장 부류는 제품 대상의 공공 인터페이스를 만들고 공장 부류는 구체적인 제품 대상을 생성한다.공장 부류에서 제품류의 실례화 조...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.