CRM系統存在的地方可以說有40種不同的產品有60種不同的訂單類型。雖然可能有相似之處,但每個產品的每個訂單的處理都是不同的。這些訂單的過程邏輯代碼涉及複雜的if else語句。代碼的變化是非常危險的,因爲它往往會在其他地方破壞一致性,因爲如果其他情況很長並且很複雜。開發者很難跟蹤其他情況。通過適當的軟件工程原理消除複雜的情況
系統如何設計爲符合OOP原則或其他方式,以便我們可以將代碼更改的效果僅限於該訂單類型和產品。
更新:
我們賣服務(S)。 服務可以合併,並稱爲捆綁。 服務是可定製的,子組件也可以添加到它。 在購買服務或修改現有服務點,訂購上升指定爲的OrderItems定製的組件。在OrderItems中,有些是MainOrderItem,其餘與MainOrderItem(記住捆綁服務)中的一個有關。 MainOrderItem直接關係到具體的服務。其他OrderItem與選定的子組件有關。每個訂單項有它自己的屬性和資源。
訂單的處理方式根據不同訂單類型。處理訂單處於幾個階段,有時可能需要一兩天。複雜的邏輯是在這一點上,如果其他條件檢查發生了40種不同的訂單類型 60個不同服務
在我心中是什麼有不同的定單類型和服務的處理邏輯,其中在不同的類(40 * 60類),並以某種方式鏈接它們。在起始點訂單處理中,基於服務和訂單類型程序應解析特定類的對象來處理訂單,這是唯一的條件檢查發生。不同的處理邏輯封裝在特定的類中。所以在處理邏輯訂單和服務沒有混合。但有一些共同的邏輯共享訂單和服務,我不想在不同的類重複。所有這些加在一起就是我在尋找想法,概念和模式(策略?,模板方法?等等)的地方。
這是一個相當廣泛的問題。我建議你創建一個「Prototye」示例(代碼),這很簡單,可以在這裏討論,但足夠真實,你可以推廣到你的完整問題。 –
沒有涵蓋這種模糊問題描述的設計模式。您需要分析和列舉您擁有的不同類型的訂單處理,共同性和差異性,並找到與問題形狀相匹配的設計模式。 – guillaume31
我將更新包含僞代碼的更多細節。 – Nicky