필터 / 체인에서 다른 핸들러에 대한 입력 매개 변수를 분리하는 방법은 무엇입니까?

앤더슨

필터 목록이 있습니다. 필터마다 책임이 다르며 다양한 입력 매개 변수를 허용합니다. 인터페이스는 다음과 같습니다.

void doFilter(Context context);

그리고 다음과 같이 실행합니다.

void main(){
  context.setA(input_for_filter_a);
  context.setB(input_for_filter_b);
  context.setC(input_for_filter_c);
  //...
  firstFilter.doFilter(context);
}

필터를 추가하려면

  1. 컨텍스트를 수정합니다. 예를 들어 getter 및 setter를 사용하여 개인 필드를 추가합니다.

  2. 새 입력 매개 변수를 채우기 위해 main ()을 업데이트하십시오.

이러한 모든 입력 매개 변수를 분리하여 다른 필터가 알아야하는 각 매개 변수에 초점을 맞출 수있는 방법이 있습니까? main ()의 코드가 안정적 이길 바랍니다. 감사!

PS 일부 필터에는 입력 매개 변수가 없을 수 있습니다.

운동

ContextFilter구현 세부 사항 간에 위험한 종속성을 만들고 있습니다. 이러한 높은 커플 링으로 인해 .NET Framework Context를 추가하거나 변경할 때마다 변경해야하는 경우와 같이 이미 인식 한 문제가 발생합니다 Filter.

모두 Context알아야 Filter할 것은 구현 세부 사항을 실행하는 공용 메서드가 있다는 것입니다. 그리고 더 이상은 없습니다! 이 메소드는 Filter인터페이스 에서 정의됩니다 .

FilterContext존재 하는 것에 달려 있습니다. 또한 매개 변수를 처리하는 방법도 알고 있습니다.

책임 체인을 구현하기 Context위해 일련의 Filter객체를 가질 수 있으며 , 인터페이스에 정의 된 필터링 메소드를 반복하고 호출 할 수 있습니다.

의사 코드에서는 다음과 같습니다.

class Filter {
  function Filter(context, params) {
    // initializes a filter object with a context and its specific parameters
  }

  function run() {
    // run is the method defined by the Filter interface
    // here goes the implementation details for this filter
  }
}


class Context {
  array filters = [];

  function applyFilter(filter) {
    filters.push(filter);
  }

  function run() {
    for filter in filters {
      // all a context needs to know is how to execute a filter
      filter.run
    }
  }
}

void main() {    
  context  = new Context();
  filter_a = new Filter(context, params_a);
  filter_b = new Filter(context, params_b);

  context.applyFilter(filter_a);
  context.applyFilter(filter_b);

  context.run();
}

의사 코드에 대해 미리 사과드립니다. 귀하의 예제 구문을 기반으로 Java 또는 C ++를 사용하고 있다고 생각합니다. 둘 다 모르겠지만 같은 구문을 따르려고했습니다.

나는 이것이 문제에 대해 약간의 빛을 비추 길 바랍니다. 더 명확하게 할 수 있으면 알려주세요.

베스트!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Vanilla JS에서 URL 매개 변수를 입력 필드에 바인딩하는 방법은 무엇입니까?

분류에서Dev

SQL 스크립트에 대한 입력 매개 변수를 제공하는 방법은 무엇입니까?

분류에서Dev

AngularJS에서 필터 필터 함수에서 매개 변수를 사용하는 방법은 무엇입니까?

분류에서Dev

함수에서 다양한 수의 매개 변수를 처리하는 방법은 무엇입니까?

분류에서Dev

입력 매개 변수 인 이름으로 액터에 대한 참조를 얻는 선호하는 방법은 무엇입니까?

분류에서Dev

Oracle CHAR 필드에 대한 JDBC PreparedStatement 매개 변수를 설정하는 방법은 무엇입니까?

분류에서Dev

입력 유형 파일에 대한 onChange 핸들러를 입력하는 올바른 방법은 무엇입니까?

분류에서Dev

Nextjs의 다른 API 핸들러에서 API 핸들러에서 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

필터 Angular JS에서 두 개의 매개 변수를 전달하는 방법은 무엇입니까?

분류에서Dev

텍스트 벡터 매개 변수를 sklearn에 공급하기 전에 다른 매개 변수와 결합하는 방법은 무엇입니까?

분류에서Dev

다른 정의에 대한 매개 변수 인 정의를 올바르게 사용하는 방법은 무엇입니까? C ++

분류에서Dev

Spock 및 Grails 2를 사용하여 서비스 메서드에 대한 인터페이스 매개 변수를 모의하는 방법은 무엇입니까?

분류에서Dev

FromSqlInterpolated에서 SQL 출력 매개 변수를 사용하는 방법은 무엇입니까? 또는 대안

분류에서Dev

CoffeeScript의 다른 함수에서 매개 변수를 빌리는 방법은 무엇입니까?

분류에서Dev

동일한 활동에 대해 두 개의 다른 인 텐트 필터를 사용하는 방법은 무엇입니까?

분류에서Dev

Rails 4에서 강력한 매개 변수를 사용하는 방법은 무엇입니까?

분류에서Dev

함수에 대한 포인터를 매개 변수로 사용하는 함수를 전달하는 방법은 무엇입니까?

분류에서Dev

MVVM에서 이벤트를 처리하는 동안 이벤트 핸들러의 두 번째 매개 변수를 보내는 방법은 무엇입니까?

분류에서Dev

함수에 필요한 특정 매개 변수에 고유 포인터를 전달하는 방법은 무엇입니까?

분류에서Dev

wsdl에서 입력 및 출력 매개 변수에 대해 동일한 요소를 제공하는 방법은 무엇입니까?

분류에서Dev

매개 변수와 별칭이 다른 열에서 SELECT를 수행하는 방법은 무엇입니까?

분류에서Dev

Kaiser의 필터에 대한 두 번째 매개 변수는 무엇입니까?

분류에서Dev

Kaiser의 필터에 대한 두 번째 매개 변수는 무엇입니까?

분류에서Dev

함수를 다른 함수에 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

일반 함수를 매개 변수로 다른 함수에 전달하는 방법은 무엇입니까?

분류에서Dev

C의 매개 변수로 여러 매개 변수가있는 함수에 대한 포인터를 받아들이고 호출하는 방법은 무엇입니까?

분류에서Dev

객체에 대한 포인터를 동일한 클래스의 객체에 대한 다른 포인터에 할당하는 방법은 무엇입니까?

분류에서Dev

rvalue 참조 매개 변수를 가져 와서 다른 곳에 전달하는 방법은 무엇입니까?

분류에서Dev

Solr의 다른 필드에서 한 필드의 데이터를 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Vanilla JS에서 URL 매개 변수를 입력 필드에 바인딩하는 방법은 무엇입니까?

  2. 2

    SQL 스크립트에 대한 입력 매개 변수를 제공하는 방법은 무엇입니까?

  3. 3

    AngularJS에서 필터 필터 함수에서 매개 변수를 사용하는 방법은 무엇입니까?

  4. 4

    함수에서 다양한 수의 매개 변수를 처리하는 방법은 무엇입니까?

  5. 5

    입력 매개 변수 인 이름으로 액터에 대한 참조를 얻는 선호하는 방법은 무엇입니까?

  6. 6

    Oracle CHAR 필드에 대한 JDBC PreparedStatement 매개 변수를 설정하는 방법은 무엇입니까?

  7. 7

    입력 유형 파일에 대한 onChange 핸들러를 입력하는 올바른 방법은 무엇입니까?

  8. 8

    Nextjs의 다른 API 핸들러에서 API 핸들러에서 데이터를 가져 오는 방법은 무엇입니까?

  9. 9

    필터 Angular JS에서 두 개의 매개 변수를 전달하는 방법은 무엇입니까?

  10. 10

    텍스트 벡터 매개 변수를 sklearn에 공급하기 전에 다른 매개 변수와 결합하는 방법은 무엇입니까?

  11. 11

    다른 정의에 대한 매개 변수 인 정의를 올바르게 사용하는 방법은 무엇입니까? C ++

  12. 12

    Spock 및 Grails 2를 사용하여 서비스 메서드에 대한 인터페이스 매개 변수를 모의하는 방법은 무엇입니까?

  13. 13

    FromSqlInterpolated에서 SQL 출력 매개 변수를 사용하는 방법은 무엇입니까? 또는 대안

  14. 14

    CoffeeScript의 다른 함수에서 매개 변수를 빌리는 방법은 무엇입니까?

  15. 15

    동일한 활동에 대해 두 개의 다른 인 텐트 필터를 사용하는 방법은 무엇입니까?

  16. 16

    Rails 4에서 강력한 매개 변수를 사용하는 방법은 무엇입니까?

  17. 17

    함수에 대한 포인터를 매개 변수로 사용하는 함수를 전달하는 방법은 무엇입니까?

  18. 18

    MVVM에서 이벤트를 처리하는 동안 이벤트 핸들러의 두 번째 매개 변수를 보내는 방법은 무엇입니까?

  19. 19

    함수에 필요한 특정 매개 변수에 고유 포인터를 전달하는 방법은 무엇입니까?

  20. 20

    wsdl에서 입력 및 출력 매개 변수에 대해 동일한 요소를 제공하는 방법은 무엇입니까?

  21. 21

    매개 변수와 별칭이 다른 열에서 SELECT를 수행하는 방법은 무엇입니까?

  22. 22

    Kaiser의 필터에 대한 두 번째 매개 변수는 무엇입니까?

  23. 23

    Kaiser의 필터에 대한 두 번째 매개 변수는 무엇입니까?

  24. 24

    함수를 다른 함수에 매개 변수로 전달하는 방법은 무엇입니까?

  25. 25

    일반 함수를 매개 변수로 다른 함수에 전달하는 방법은 무엇입니까?

  26. 26

    C의 매개 변수로 여러 매개 변수가있는 함수에 대한 포인터를 받아들이고 호출하는 방법은 무엇입니까?

  27. 27

    객체에 대한 포인터를 동일한 클래스의 객체에 대한 다른 포인터에 할당하는 방법은 무엇입니까?

  28. 28

    rvalue 참조 매개 변수를 가져 와서 다른 곳에 전달하는 방법은 무엇입니까?

  29. 29

    Solr의 다른 필드에서 한 필드의 데이터를 사용하는 방법은 무엇입니까?

뜨겁다태그

보관