40 가지 제품에 대해 60 가지의 주문 유형이있는 CRM 시스템이 있습니다. 유사점이 있지만 각 제품의 각 주문 처리는 다릅니다. 이러한 명령의 프로세스 논리에 대한 코드에는 복잡한 if else 문이 포함됩니다. 코드 변경은 다른 경우에는 길고 복잡하기 때문에 다른 곳에서는 일관성을 잃어 버리기 때문에 매우 위험합니다. 개발자가 다른 경우를 추적하는 것은 매우 어렵습니다.적절한 소프트웨어 엔지니어링 원칙을 통해 복잡한 것이 제거 된 경우
OOP 원칙 또는 기타 방법으로 시스템을 설계 할 수 있으므로 코드 변경의 영향을 해당 주문 유형 및 제품에만 국한시킬 수 있습니다.
업데이트 :
우리는 판매 서비스 (들). 서비스을 결합하여 번들이라고 부를 수 있습니다. 서비스은 사용자 정의 할 수 있으며 하위 구성 요소도 추가 할 수 있습니다. 기존 서비스를 서비스을 구입하거나 수정하는 시점에서 은는 주문은 OrderItems에로 지정된 사용자 정의 된 구성 요소와 함께 발생합니다. OrderItem 중 일부는 이고 MainOrderItem은이고 나머지는 MainOrderItem (번들 서비스 기억) 중 하나와 관련됩니다. MainOrderItem은 (는) 특정 서비스과 직접 관련이 있습니다. 다른 OrderItem은 선택된 부속 구성 요소와 관련됩니다. 각 주문 항목에는 고유 한 이 있습니다. 속성은 및 입니다. 자원은입니다.
은 주문 유형에 따라 다르게 처리됩니다. 의 처리은 여러 단계로 이루어지며 때로는 하루나 이틀 정도 소요될 수 있습니다. 복잡한 논리는 다른 조건 검사가 60 개 종류 서비스
내 마음 속에 어떤 것은 그 다른 주문 유형 및 서비스의 처리 로직을 가지고있다 40 개 다른 주문 유형에 대해 발생하는 경우이 시점에서 다른 클래스 (40 * 60 클래스)와 어떻게 든 연결하십시오. 처리의 시작 지점에서 서비스 및 주문 유형 주문 유형을 처리하려면 프로그램이 특정 클래스의 개체를 해결해야하며 이는 유일한 조건 검사입니다. 고유 한 처리 논리는 특정 클래스 내에 캡슐화됩니다. 따라서 가공 로직에는 주문이 혼합되어 있지 않습니다. 주문 및 서비스입니다. 하지만 여러 개의 공통 논리가 복수 사이에 공유되어 있습니다.과 서비스 다른 클래스로 복제하고 싶지는 않습니다. 이 모든 것이 결합되어 아이디어, 개념 및 패턴 (전략, 템플릿 방법 등)을 찾고 있습니다.
꽤 광범위한 질문입니다. "prototye"예제 (코드)를 만들 것을 제안합니다.이 예제는 여기에서 설명하기에 충분히 간단하지만 전체 문제에 대해 일반화 할 수있을만큼 충분히 실제적입니다. –
모호한 문제 설명을 다루는 디자인 패턴이 없습니다. 서로 다른 유형의 주문 처리, 공통점 및 차이점을 분석하고 열거하고 문제의 모양과 일치하는 디자인 패턴을 찾아야합니다. – guillaume31
질문을 의사 코드를 포함한 더 자세한 내용으로 업데이트합니다. – Nicky