在这篇文章Provider和Factory的区别,作者提到“可以往工厂里面添加Provider。也就是说Factory里面可能存在着许许多多的Provider。而这些Provider将是最后Factory创建出结果的必要支撑”。
可以理解为提供者是一种大的模式,而工厂模式是其中的一种;再拿我们熟知的策略模式,根据传入的参数不同,可以得到不同的功能。也可以理解为Provider的一种,在这个例子浅谈提供者模式(provider pattern),中看到:
namespace Porvider
{
public class MyCartProvider
{
static CartProvider cp;
static MyCartProvider()
{
//通过配置文件读取实现类
//读取类名
string classname = System.Configuration.ConfigurationManager.AppSettings["provide"];
//通过反射,取得当前运用程序集
System.Reflection.Assembly assemble = Assembly.GetCallingAssembly();
//通过类型创建类型实例
object o = assemble.CreateInstance(classname);
cp = o as CartProvider;
}
//静态方法调用静态成员
public static void AddItem(int num)
{
cp.AddItem(num);
}
}
}
这个在获取具体的功能时,是从一个文件中进行反射创建的,而策略模式直接是在运行中创建的,两者是极为相似的;并且,在这篇文章深入剖析Provider Model中看到,Provider是一种大的范畴,涵盖了策略模式、工厂方法、单件模式、外观模式。