我試圖在我的應用程序中實現Factory pattern
。如何在C#中實現工廠設計模式#
參考這些鏈接,我試圖實現,但堅持在一個地方&不知道如何繼續。
- How to update this class/method to improve Code Metrics
- http://www.dofactory.com/net/factory-method-design-pattern
- How to implement Factory pattern?
請找 「//這裏弄得我怎麼在這裏實現」 以我 代碼註釋,以獲得我在哪裏卡住了。
//DAL Layer
public interface IReportHandler
{
IEnumerable<DocumentMapper> FetchDocumentsList(Guid clientId, int pager = 0);
}
public class ReportHandler : IReportHandler
{
public IEnumerable<DocumentMapper> FetchDocumentsList(Guid clientId, int pager = 0)
{
//implentation of the method
}
}
//BLL
public interface IReportFactory
{
IReportHandler Create(int factoryId);
}
public class ReportFactory : IReportFactory
{
private IReportHandler reportObj;
public override IReportHandler Create(int factoryId)
{
switch (factoryId)
{
case 1:
reportObj = new ReportHandler();
return reportObj;
default:
throw new ArgumentException("");
}
}
}
//UI Layer
public String GetAllDocuments(string url,int pager =0)
{
if (SessionInfo.IsAdmin)
{
string documents ;
//call GetDocumentIntoJson() private method
}
else
{
return "Sorry!! You are not authorized to perform this action";
}
}
private static string GetDocumentIntoJson(int clientId, int pager)
{
// confused here how do I implement here
IReportHandler dal = ReportFactory
var documents = dal.FetchDocumentsList(clientId, pager);
string documentsDataJSON = JsonConvert.SerializeObject(documents);
return documentsDataJSON;
}
有人可以指導我實現工廠模式+提高我的代碼片段?
任何幫助/建議高度讚賞。
你最初的意圖是什麼,你認爲你需要一個工廠? – guillaume31
我投票結束這個問題作爲題外話題,因爲它也被代碼審查的同一個人問及他們已經給了一些非常好的答案在那裏http://codereview.stackexchange.com/questions/150382/工廠爲報告處理程序 –