2017-10-12 1 views
0

우리는 선두 사업에 종사하고 있습니다. 우리는 리드를 포착하고 몇 가지 규칙에 따라 고객에게 전달합니다. API의 성격과 같은 성격 상 각각의 클라이언트와의 통합이 필요하며 어떤 경우에는 데이터 매핑이 필요합니다. 리드를 클라이언트로 라우팅하기 위해 다음 단계를 수행합니다. 모든 클라이언트 별 매핑 (마스터 데이터)가 필요한 경우 올바른 디자인 패턴을 선택하는 데 도움이 필요

  1. 는 클라이언트에게
  2. 확인을 선택합니다. 가능한 가장 가까운 대리점 (선택적 단계)
  3. 전화 클라이언트 API에
  4. 보내기 리드는 데이터베이스에 일부 단계는 선택 사양 일 수

주 리드의

  • 업데이트 푸시 상태를 이끌 보낼 수 있습니다.

    이 문제를 해결하기에 적합한 디자인 패턴은 다음 중 어느 것입니까? 동기는 각 클라이언트와의 통합을 단순화하는 것입니다.

  • +0

    아마 당신이 고려해 본 몇 가지 디자인을 제안 할 수 있습니까? – dm03514

    +0

    알려진 클라이언트 수가 있습니까? 신규 고객이 시나리오를 처리 할 때 새로운 클래스를 만드십니까? – Amit

    답변

    1

    데이터 매핑 및 API와 같이 클라이언트간에 다른 측면을 격리하고 가능하면 외부화하려는 것이 좋습니다. 새로운 클라이언트와 API를 얼마나 쉽게 수용 할 수 있을지 고려해야합니다.

    많은 클라이언트와 데이터베이스 또는 클라이언트 목록을 보유하는 다른 영구 메커니즘이 있다고 가정하므로 클라이언트에 리드를 매핑하는 데이터 기반 라우팅 논리가 문제가되어서는 안됩니다. 응용 프로그램 자체는 가능한 한 "벙어리 (dumb)"여야합니다.

    데이터 매핑은 메타 데이터를 사용하여 쉽게 설명 할 수 있으며 데이터를 쉽게 사용할 수 있습니다. 메타 데이터 매핑은 클라이언트마다 다르므로 XML 또는 다른 형식으로 각 클라이언트와 관련된 데이터베이스에 쉽게 보관할 수 있습니다. 특정 API를 준수하는 데 필요한 리드에 대한 변환이 매우 복잡한 경우 대상 클라이언트에 따라 특정 전략을 선택하여 전략 패턴을 사용하여 논리를 격리 할 수 ​​있습니다. 극도로 많은 수의 클라이언트와 API를 수용해야한다면 API를 데이터 기반으로 만들기 위해 거꾸로 구부릴 것입니다. 몇 가지 클라이언트 유형 (예 : 20 개 미만)이있는 경우 분산 비동기를 사용하고 클라이언트 유형에 해당하는 주제에 리드 및 클라이언트 정보를 게시하고 외부 프로세서를 등록해야합니다. 각 클라이언트 유형은 자신의 일을 수행하고 다른 단일 대기열에 결과를 게시합니다. 결과 대기열에 대한 소비자 목록은 데이터베이스를 업데이트합니다.

    1) 다른 클라이언트와 API의 통합 :

    0

    나는 아래에 언급 된 세 부분으로 문제 문을 나눌 것입니다. 2) 리드를 클라이언트로 라우팅하기 위해 몇 가지 단계를 수행하십시오. 3) 데이터베이스에 대한 리드의 푸시 상태를 업데이트합니다. 세 부분 이상에 참여

    디자인 패턴

    1) 다른 클라이언트와 API의 통합 - 각 클라이언트에 대한 통합은 API의 성격과 같은 성격에 따라 다릅니다. 호환되지 않는 유형의 인터페이스가있는 것 같습니다. "어댑터 디자인 패턴"을 사용하여이 섹션을 디자인해야합니다.

    2) 리드를 클라이언트에 연결하기 위해 몇 가지 단계 수행 - 실행 단계가 다릅니다. 다음 단계는 이전 단계를 기반으로합니다. 따라서 "State Design Pattern"을 사용하여이 섹션을 디자인해야합니다.

    3) 데이터베이스에 대한 리드의 푸시 상태 업데이트 :이 문은 리드의 푸시 상태가 발생하여 데이터베이스에 정보가 업데이트 될 때마다 데이터베이스에 알리고 있음을 보여줍니다. 따라서 "옵저버 디자인 패턴"을 사용하여이 섹션을 디자인해야합니다.

    0

    소리가 워크 플로우 영역에 해당합니다. Amazon Web Services를 사용하고 있다면 SWF가 있습니다. 그렇지 않으면 좋아하는 프로그래밍 언어에 대해 많은 워크 플로 솔루션이 있습니다.

    관련 문제