0

我對設計場景感到困惑和問題。如何在代碼中解釋此流程?

該算法適用於數學系統。

輸入:

  • 等級:的數學題難度
  • 數量:問題數

OUTPUT:

  • 問題:這將是Prn的IEnumerable oblem

我缺乏設計經驗。我想這個過程的中間過程就像工廠一樣。

問題是由規格產生的。例如,假設我有一個附加問題的問題模型。

public class AdditionProblem : Problem 
{ 
    public double Number1 { get; set; } 
    public double Number2 { get; set; } 
} 

要產生問題,工廠應該知道問題的規格。如果我的輸入接收到一個begginer級別,那麼問題應該是10到90之間的正整數,如果他選擇了Advance級別,那麼產生問題的規格應該是負值和正整數,直到6位數。

我認爲工廠應該已經知道規格(我假設IDictionary)。 我只是希望你可以幫助這個第一個設計,我可以在以後繼續開發。這是我有點失落的第一部分。

我不想完整的代碼,只是想法。

UPDATE:

下面是當前項目的一個環節:http://sdrv.ms/PKZsJ6 請隨時提出,或者告訴你的意見。

+0

這是一個功課題嗎? – 2012-07-27 16:50:05

+0

不,這是我決定構建的教育軟件。我已經建立了這樣的軟件,但最後一個變成了一個怪物,因爲它不靈活和可維護,所以我想重新開始面向對象的良好實踐。 – 2012-07-27 16:52:06

+0

我已經使用當前的代碼更新了帖子,請查看。 – 2012-07-28 05:43:45

回答

1

你應該採用分層的方式來處理應用程序的設計。

要在您的案例中擁有一個好的架構,作爲第一步,您需要分離問題。例如,你在這裏有兩個層次的問題(至少從你的問題描述中)。

  1. 定義問題容器的框架。即您所展示的課程。
  2. 定義內容的框架。這是向容器中添加數據的邏輯,在您的示例中爲初學者填充正數等。

您可以將它們分離爲兩個不同的子系統,並且至少容器不需要了解內容。

現在可以有一個控制器來綁定這兩個。但是,控制器不應該瞭解每個子系統的低層細節。

現在,當談到容器的定義時,您可以像您提到的那樣考慮像工廠這樣的模式。