标题不是很有用,所以我在这里解释一下:
在我的应用程序中,我有一些类,它们提供了管理数据的方法:例如,我删除了一个数据库条目,但在删除它之后,我必须删除另一个地方的文件。因为我需要在我的应用程序的多个位置使用此方法,所以我为所有这些方法创建了一个类。另一方面,我有很多函数,只是从数据库中获取一些数据,稍微处理它们并在一个简单的模型中返回它们。
但是:我怎么称这样的课?我在维基百科上找不到任何相应的设计模式。
感谢您的帮助。
答案 0 :(得分:1)
关于保持您的方法和功能组织良好,我建议您查看Command Design Pattern(也http://www.dofactory.com/Patterns/PatternCommand.aspx)
我们的想法是将您的方法包装到命令对象中,例如DeleteDatabaseEntryCommand
,DeleteFileCommand
,LoadRecordsFromDatabaseCommand
。因此,您不必费心拥有一个具有这些方法的超级类,只需创建一个您希望执行的命令实例。
我过去曾使用过这种模式,并且发现它非常灵活。我还使用了具有Command设计模式的Factory设计模式,如下所示:
public interface ICommand
{
void Execute();
}
public class CreateUserCommand : ICommand
{
public void Execute()
{
Console.WriteLine("Hello World");
}
}
public class DeleteUserCommand : ICommand
{
private readonly int _userId;
public DeleteUserCommand(int userId)
{
_userId = userId;
}
public void Execute()
{
Console.WriteLine("Deleting " + _userId);
}
}
public interface ICommandFactory
{
ICommand Create<T>();
}
public class CommandFactory : ICommandFactory
{
public ICommand Create<T>()
{
return Activator.CreateInstance<T>() as ICommand;
}
public ICommand Create<T>(object[] args)
{
return Activator.CreateInstance(typeof(T), args) as ICommand;
}
}
使用示例
public class Program
{
static void Main(string[] args)
{
var factory = new CommandFactory();
var cmd = factory.Create<DeleteUserCommand>(new object[] { 23 });
cmd.Execute();
}
}
注意每个命令如何很好地分离逻辑,因此您需要了解有关删除用户的任何信息都可以在DeleteUserCommand
类中找到。我发现这有助于记录我的系统。
想一想,如果它是套房你需要的东西那么酷。
答案 1 :(得分:0)
嗯,你只是说你的自己,它被称为模型,实际上你的描述与MVVM
模式非常接近,代表:Model-View-ViewModel
,模型是class,它只是对象的数据模板,ViewModel,其中所有处理都发生,视图是实际的GUI。
你打电话给模特,无论它们是什么......如果它是一辆汽车,称之为汽车,如果它是房子,称之为房子,并将你的模型保存在一个单独的库中,它将带来更多的结构你的代码。