首页 / C# / C#-工厂模式:确定具体的工厂类实例化?
C#-工厂模式:确定具体的工厂类实例化?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-工厂模式:确定具体的工厂类实例化?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1844字,纯文字阅读大概需要3分钟。
内容图文
![C#-工厂模式:确定具体的工厂类实例化?](/upload/InfoBanner/zyjiaocheng/652/e1bad96920094444856fe8422fbf60b2.jpg)
我正在尝试学习模式,并且坚持确定工厂模式如何或在何处确定实例化类.如果我有一个调用工厂并发送给它的应用程序(例如,一个xml配置文件)来确定要采取的操作类型,那么解释配置文件的逻辑在哪里发生?
该工厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace myNamespace
{
public abstract class SourceFactory
{
abstract public UploadSource getUploadSource();
}
public class TextSourceFactory : SourceFactory
{
public override UploadSource getUploadSource()
{
return new TextUploadSource();
}
}
public class XmlSourceFacotry : SourceFactory
{
public override UploadSource getUploadSource()
{
return new XmlUploadSource();
}
}
public class SqlSourceFactory : SourceFactory
{
public override UploadSource getUploadSource()
{
return new SqlUploadSource();
}
}
}
班级
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace myNamespace
{
public abstract class UploadSource
{
abstract public void Execute();
}
public class TextUploadSource : UploadSource
{
public override void Execute()
{
Console.WriteLine("You executed a text upload source");
}
}
public class XmlUploadSource : UploadSource
{
public override void Execute()
{
Console.WriteLine("You executed an XML upload source");
}
}
public class SqlUploadSource : UploadSource
{
public override void Execute()
{
Console.WriteLine("You executed a SQL upload source");
}
}
}
解决方法:
实例化的实际工厂通常是在运行时选择的,通常是由单独的工厂加载程序类选择的.加载程序可能会获得必要的配置,例如在xml配置文件中,并从中读取要加载的具体工厂的类名.
这本身并不是一个非常复杂的逻辑.将其归入工厂装载程序类的原因是可重用性.您的应用程序中可以有许多工厂,并且通常,大多数工厂加载代码非常相似,因此将其放入单独的类(层次结构)中可以消除代码重复.当然,逻辑可能与此示例不同并且更加复杂.
例如.更动态的方案是在xml文件中指定按钮/菜单项与类名之间的映射,然后在GUI上,用户可以通过按按钮/选择菜单项来更改要使用的工厂.
内容总结
以上是互联网集市为您收集整理的C#-工厂模式:确定具体的工厂类实例化?全部内容,希望文章能够帮你解决C#-工厂模式:确定具体的工厂类实例化?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。