C# 模型创建者是如何命名的?
标题信息量不大,所以我在这里解释: 在我的应用程序中,我有几个类,它们提供了管理数据的方法:例如,我删除了一个数据库条目,但在删除它之后,我必须在另一个地方删除一个文件。因为我在应用程序中的多个位置需要这个方法,所以我为所有这些方法创建了一个类。另一方面,我有很多函数,它们只是从数据库中获取一些数据,稍微处理它们,然后在一个简单的模型中返回它们 但是:我怎么称呼这样的班级呢?我在维基百科上找不到任何相应的设计模式C# 模型创建者是如何命名的?,c#,design-patterns,C#,Design Patterns,标题信息量不大,所以我在这里解释: 在我的应用程序中,我有几个类,它们提供了管理数据的方法:例如,我删除了一个数据库条目,但在删除它之后,我必须在另一个地方删除一个文件。因为我在应用程序中的多个位置需要这个方法,所以我为所有这些方法创建了一个类。另一方面,我有很多函数,它们只是从数据库中获取一些数据,稍微处理它们,然后在一个简单的模型中返回它们 但是:我怎么称呼这样的班级呢?我在维基百科上找不到任何相应的设计模式 谢谢你的帮助。你刚才自己说的,它叫做模型,事实上你描述的与MVVM模式非常接近,M
谢谢你的帮助。你刚才自己说的,它叫做模型,事实上你描述的与MVVM模式非常接近,MVVM模式代表:
模型-视图-视图-模型
,模型是类,只是对象的数据模板,所有处理都发生在视图模型上,视图是实际的GUI
你叫模特,不管他们是什么。。。如果它是一辆汽车,就称它为汽车,如果它是一所房子,就称它为房子,并将您的模型保存在一个单独的库中,这将为您的代码带来更多的结构。关于保持方法和功能井然有序,我建议您查看 其思想是将方法包装到命令对象中,例如
DeleteDatabaseEntryCommand
,DeleteFileCommand
,LoadRecordsFromDatabaseCommand
。因此,您不必麻烦让一个uber类具有这些方法,只需创建您希望执行的命令的实例
我过去使用过这种模式,发现它非常灵活。我还使用了工厂设计模式和命令设计模式,如下所示:
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;
}
}
公共接口ICommand
{
void Execute();
}
公共类CreateUserCommand:ICommand
{
public void Execute()
{
Console.WriteLine(“你好世界”);
}
}
公共类DeleteUserCommand:ICommand
{
私有只读int_userId;
公共DeleteUserCommand(int userId)
{
_userId=userId;
}
public void Execute()
{
Console.WriteLine(“删除”+_userId);
}
}
公共接口ICommandFactory
{
ICommand Create();
}
公共类CommandFactory:ICommandFactory
{
公共ICommand Create()
{
将Activator.CreateInstance()作为ICommand返回;
}
公共ICommand创建(对象[]args)
{
将Activator.CreateInstance(typeof(T),args)作为ICommand返回;
}
}
示例用法
public class Program
{
static void Main(string[] args)
{
var factory = new CommandFactory();
var cmd = factory.Create<DeleteUserCommand>(new object[] { 23 });
cmd.Execute();
}
}
公共类程序
{
静态void Main(字符串[]参数)
{
var factory=newcommandfactory();
var cmd=factory.Create(新对象[]{23});
cmd.Execute();
}
}
请注意,每个命令都很好地分隔了逻辑,因此有关删除用户的任何信息都可以在DeleteUserCommand
类中找到。我发现这有助于更轻松地记录我的系统
想想看,如果这是你需要的,那就酷吧。不幸的是,你问的问题还不清楚。我们没有任何代码片段来获取任何上下文,也不了解您如何使用现有的类。这是因为您没有使用模式。如果你愿意,你可以使用命令模式,但我相信这不是你想要的。您可以创建一个类“Utils”,并将您的方法放在其中。因此,您可以将其作为单例使用,而不是一直创建新实例。具有与数据库通信的方法的类可以称为
存储库
。如果您使用params
关键字定义参数,则在调用方法时无需显式创建数组。args
参数仍然是可以传递给激活器的普通数组<代码>公共ICommand创建(参数对象[]args)