我創造的數學問題的軟件。如你所知,數學問題有很多種。如何改進這種設計(模式)?
在我的軟件,一些問題是從一個XML文件(庫)得到,並且可以由工廠產生anothers(隨機數,你懂的)。
例如,如果我創建二進制問題補充,如果我選擇了第一個選項,我可以有一個類從哪裏得到THRE文件,並選擇其中的一些。或者如果我選擇第二個,我可以隨機生成問題:
x = random.Next(y, z);
y = random.Next(y, z);
return new BinaryProblem(x, y);
就是這樣的。
所以,我已經開發了現在這樣的設計,我想我已經建造了策略模式。
public interface IProblemService
{
IEnumerable<Problem> GetProblems();
}
public class ProblemService : IProblemService
{
private readonly IService service;
public ProblemService(IService service)
{
this.service = service;
}
public IService Service
{
get { return service; }
}
public IEnumerable<Problem> GetProblems()
{
return this.service.GetProblems();
}
}
/* =====================================================*/
CONCRETE CLASSES
public interface IService
{
IEnumerable<Problem> GetProblems();
}
// When I want to generate random problems
public abstract class FactoryService : IService
{
public IEnumerable<Problem> GetProblems();
public abstract Generate();
}
// When I want to get problems through a XML file
public class RepositoryService : IService
{
public abstract IEnumerable<Problem> GetProblems();
void Submit(IEnumerable<Problem> problems);
}
在服務中,我把IService設置爲public,因爲我需要知道服務是工廠還是存儲庫。在這種情況下,我會向文件提交一些問題。
我不相信這個設計。我想我是多餘的,這不是最好的辦法。
你可以給你opinnion或想法,以改善它?
編輯: 我的第一個選項的意思是:
public IEnumerable<Problem> GetProblems()
{
if (model == null)
{
model = new List<Problem>();
// Dummy Data.
model.Add(new SimplifyProblem() { Id = "1", Expression = "8 ÷ 2 x 5 ÷ 10", Result1 = 2 });
model.Add(new SimplifyProblem() { Id = "2", Expression = "20 ÷ 2 x 5 - 2", Result1 = 48 });
model.Add(new SimplifyProblem() { Id = "3", Expression = "15 ÷ 5 + 3", Result1 = 6 });
model.Add(new SimplifyProblem() { Id = "4", Expression = "6 + 4² ÷ 8 - 2", Result1 = 6 });
model.Add(new SimplifyProblem() { Id = "5", Expression = "8 + 2 x 4", Result1 = 40 });
model.Add(new SimplifyProblem() { Id = "6", Expression = "8 + 4 x (5 - 3)", Result1 = 16 });
model.Add(new SimplifyProblem() { Id = "7", Expression = "8 - 3 + 5", Result1 = 10 });
// ...
}
return model;
}
如何考慮的具體問題(資料庫)的特殊情況下,隨機問題?隨機問題除了隨機數部分還需要描述,對嗎? – nhahtdh 2012-07-10 03:49:10
是的,它就像一個配置..我省略了 – 2012-07-10 03:53:59
我的意思是說,你可以通過一個「管道」來解決問題:首先從XML中獲取數據,然後生成隨機問題。那麼你不需要擴展IService接口的2個類。 – nhahtdh 2012-07-10 03:56:41