Design patterns 工厂方法模式的实际用途是什么?
我对设计模式很陌生。我刚遇到工厂设计模式。我知道它将实例化委托给子类。但我没有得到该模式的实际应用。在哪些场景中可以使用此模式以获得良好效果。我听说过模式滥用,不想沉迷于此。有人能举一个现实世界中常用的例子吗 我只是在一个调度应用程序中使用它,其中要调度的任务位于单独的程序集中,而调度程序对任务一无所知。。。它从外部源获取在其中定义任务的程序集的名称,然后动态加载程序集,使用定义良好的接口实例化该程序集中的类。调度器中的工厂方法将程序集名称作为输入参数,返回加载程序集中类的实例Design patterns 工厂方法模式的实际用途是什么?,design-patterns,Design Patterns,我对设计模式很陌生。我刚遇到工厂设计模式。我知道它将实例化委托给子类。但我没有得到该模式的实际应用。在哪些场景中可以使用此模式以获得良好效果。我听说过模式滥用,不想沉迷于此。有人能举一个现实世界中常用的例子吗 我只是在一个调度应用程序中使用它,其中要调度的任务位于单独的程序集中,而调度程序对任务一无所知。。。它从外部源获取在其中定义任务的程序集的名称,然后动态加载程序集,使用定义良好的接口实例化该程序集中的类。调度器中的工厂方法将程序集名称作为输入参数,返回加载程序集中类的实例 。。但是有这么多
。。但是有这么多的用途和使用方法。。这种模式 我用它作为应用程序的插件。。。通过这种方式,您可以让主应用程序调用类工厂来实例化特定插件,该插件实现您在主应用程序中开发的某些接口。这样,您就可以对应用程序的主要部分进行编码,而无需知道要插入的内容。工厂模式对于将容量映射到适当的处理程序非常有用。假设您有一个队列,其中包含
task
类型的对象
现在,出于各种原因,您可以将task
子类化。如果您是从数据库等源加载任务,则可以使用工厂来确定要加载的任务类型
例如:
private IEnumerable<Task> GetTasks(DataTable Table){
Task NewTask;
foreach(DataRow Row in Table){
switch(tasktype){
case tasktypes.TaskTypeA:
NewTask = NewTaskA(...);
break;
case TaskTypes.TaskTypeB:
NewTask = NewTaskB(...);
break;
...
}
yield return NewTask;
}
}
private IEnumerable GetTasks(数据表){
任务任务;
foreach(表中的数据行){
开关(任务类型){
案例tasktypes.TaskTypeA:
新任务=新任务(…);
打破
案例TaskTypes.TaskTypeB:
NewTask=NewTaskB(…);
打破
...
}
收益率;
}
}
稍后,您可以对队列中的任务调用虚拟方法,例如“消费”或“流程”
工厂方法(在本例中)的优点是,您只需打开一次任务类型(当创建任务时),并让多态性处理大多数其他事情。无可否认,由于C的工作方式,不再需要实际使用模式描述的更痛苦的实现细节,但是我的SQLDAL功能将对象工厂(和SQL命令)传递给使用工厂来生成对象的实用程序函数。如果我没有使用C#,我想我可以使用一个显式的工厂类来生成对象。即在以下两种情况中的一种:
您仍然可以在不为实例化指定类的情况下执行相同的操作吗?