[英]Private nested class with multiple public methods
我上課管理3種不同的上傳操作:
internal class UploadManager
{
internal UploadManager(UploadOperation uploadOperation)
{
switch (uploadOperation.OperationType)
{
//run different set of async tasks based on OperationType,
//using nested class Uploader
}
}
private class Uploader
{
//do all upload work
}
}
Wcf操作合同中使用的3個操作之間的區別以及要發送的數據類型。 這種情況下最好的架構是什么? 設置3個不同的Uploader類? 還是1類3種方法? 還是一種方法有3個重載的1類?
總的來說,我應該使用嵌套類嗎? 謝謝。
在評論后添加:問:操作類型會隨時間變化嗎? 答:不可以
問:您會添加更多嗎? 答:是(還有1-5個)
問:它們是否會需要更多參數,並且不會在所有類型之間共享? 答:不可以
您應該避免實例化您的UploadManager中的類,而應提供一個UploaderFactory類,該類選擇要使用的特定上載器。 為了實現這一點,Uploader和uploaderFactory需要實現接口(IUploader和IUploaderFactory)。 工廠有一個方法-GetUploader(...),它返回正確類型的Uploader的實例。
無需私人班級-使其內部化。 最重要的是隔離功能使所有內容都可測試。
所以像這樣:
interface IUploader
{
void DoStuff();
}
interface IUploaderFactory
{
IUploader GetUploader(UploadOperation uploadOperation);
}
internal class UploadManager
{
internal UploadManager(IUploaderFactory uploaderFactory, UploadOperation uploadOperation)
{
var uploader = uploaderFactory.GetUploader(uploadOperation);
//run different set of async tasks based on OperationType,
//using nested class Uploader
uploader.DoStuff();
}
}
internal class Uploader1 : IUploader
{
public void DoStuff()
{
...
}
}
internal class Uploader2 : IUploader
{
public void DoStuff()
{
...
}
}
internal class Uploader3 : IUploader
{
public void DoStuff()
{
...
}
}
這種方法的主要優點是:
這是一個模糊的答案,但我認為它是一種架構方法。
希望對您有所幫助-祝您好運!
使用KISS原理,我將通過3種方法參加1節課。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.