2012-11-16 281 views
1

我試圖讓這個問題的更好的模式/技術:設計模式

我有一些一套標準枚舉說X,Y,Z和我應該產生不同的輸出的過程/基於給定標準的給定組合的結果。

的組合被定義爲一組規則,例如:

rule_B = new Rule(X.Value1, Y.Value3, z.Value2); 
rule_A = new Rule(X.Value2, Y.Value1, z.Value3); 

每個規則定義的標準的唯一組合,並且不是所有的組合可以具有規則的(因爲一些組合可能沒有意義) 。規則實例不起作用,它們只是將每個因素存儲到唯一組合中的容器。

我的問題是我怎麼使用一個公共接口類執行一組特定的過程,如:

class RuleExecutor { 
    public void ExecuteBasedOnRule(Rule rule) { 
     // Here is where I am stuck!!!!!! 
    } 
} 

/技術,我可以使用什麼樣的設計模式來執行的3個步驟1 X的值,一個用於Y的值,另一個用於RuleExecutor中的Z,每個基於它的步長值執行不同的過程。在C++中,我可能會使用模板專門化,但C#似乎並沒有幫助我。

注意:在這個令人費解的例子中,有三個因素與一小組可能的值,在我期待這樣做的項目中這些非常大,並且爲每個可能的組合創建一個具體類並不是我會考慮的輕輕!

回答

1

命令模式似乎很合適。 你可以有2個步驟執行:

  1. 配置RuleExecutor與所需Rule
  2. 運行ExecuteBasedOnRule方法RuleExecutor。該方法應解析存儲的配置並根據數據採取行動。

因此,我會定義一個接口與2種方法:config(Rule)和​​。

+0

所以在配置對象中會有一些命令類類型實例,每個因素都有一個。其中的每一個都會在ExecuteBasedOnRule中執行。這是有道理的,因爲我可以使用'XFactorCommandFactory','YFactorCommandFactory'等,並讓他們根據相關的因子值創建正確的命令實例? –

+0

聽起來對我來說是正確的 – SomeWittyUsername