我有一堂课,里面有很多功能:
MyClass.cs方法:
登录
上传文件
上传文件夹
上传大文件
下载
还有更多
问题在于类的成长和壮大,并且开始在同一个类中编写整个方法变得不舒服。
一方面,我想调用以下功能:
var myclass=new MyClass();
myclass.SomeMethod();
但是价格是将所有类放在同一文件中。
我为此有任何设计模式吗?或任何其他想法将不胜感激
答案 0 :(得分:1)
只需将MyClass
方法中的代码提取到其他类即可。在MyClass
中,您只需调用/委托其他类即可。
这样,您可以减少MyClass
中的代码量,而无需减少其方法列表。
答案 1 :(得分:1)
如何使用依赖倒置?
然后您可以定义您的主类,例如
public class MyClass
{
public IUserManagement UserManager { get; set; }
public IFileManagement FileManager { get; set; }
public IFolderManagement FolderManager { get; set; }
public MyClass()
{
}
}
具有这些界面
public interface IUserManagement
{
void Login(string username, string password);
void Logout();
}
public interface IFileManagement
{
void UploadFile(string path);
void UploadLargeFile(string path);
void DownloadFile(string filename, string savePath);
}
public interface IFolderManagement
{
void DownloadFolder(string path);
void UploadFolder(string path);
}
然后,您的大量代码将进入执行诸如此类特定任务的类。
public class MyFileManager : IFileManagement
{
public void DownloadFile(string filename, string savePath)
{
//Add code here
}
public void UploadFile(string path)
{
//Add code here
}
public void UploadLargeFile(string path)
{
//Add code here
}
}
public class MyUserManager : IUserManagement
{
public void Login(string username, string password)
{
//Add code here
}
public void Logout()
{
//Add code here
}
}
public class MyFoldermanager : IFolderManagement
{
public void DownloadFolder(string path)
{
//Add code here
}
public void UploadFolder(string path)
{
//Add code here
}
}
然后您可以创建您的类并调用类似的方法
MyClass myClass = new MyClass()
{
FileManager = new MyFileManager(),
FolderManager = new MyFoldermanager(),
UserManager = new MyUserManager()
};
myClass.FileManager.DownloadFile("myfilename", @"c:\path\to\file.txt");
如果需要,还可以在MyClass中添加包装器,以隐藏诸如此类的一些复杂性。
//Add in MyClass
public void UploadFile(string path)
{
this.FileManager.UploadFile(path);
}
//Called like this
myClass.UploadFile(@"c:\path\to\other\file.txt");
这样,您可以将每个功能区域的职责委派给易于管理的特定类。