您的位置:知识库 » .NET技术

.NET 2.0的Provider模式

作者: 极地银狐.NET  来源: 博客园  发布时间: 2009-03-17 15:25  阅读: 9955 次  推荐: 0   原文链接   [收藏]  
摘要:本文全面地介绍了Prodive模式的概念以及应用,对于理解Provider模式的理解起到了很大的帮助
[1] Provider模式统览
[2] 细节,细节,还是细节
[3] 执行

第一部分: Provider模式统览

Provider设计模式是在.NET 1.1 framework中被首次介绍到,特别是在ASP.NET快速入门中,以及后来在ASP.NET Whidbey中作为membership management provider API被正式化。它的主要目的在于为一个API进行定义和实现的分离。这样就通过核心功能的灵活性和易于修改的特点使得API具有灵活性。

MSDN上能找到关于此模式在.NET 1.1 Framework的更多信息:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspnet/html/asp02182004.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspnet/html/asp02182004.asp

Provider设计模式基本上是由GOF的两个设计模式溶合而成的:strategyabstract factoryAPI定义好,其功能通过strategy模式变异而来,是“可插(拔)”的,而功能被加载进内存则是通过大致地一个abstract factory设计模式而实现的。

以下是此部分基本概要,以及它们如何互交。

1.  API Class:这是一个通过静态方法定义和暴露所需功能的类,在API Class中并没有具体的实现。此类保持一个对Application Provider Base类的引用,这个base类会对API中的功能进行基本的包装(Wrap)。

 

本文中的API Class是一个商店(Store)我们可以从中买东西,如Coke(可乐)Snickers(译者:不知道这是啥。),还有在吃Snicker和喝Coke时所要的diet pills(减肥药)。


我们的类包括以下几部分:

A:我们有基本的API用于存放货物AddProductToStock,还有如GetProductPriceGetProductStockCount以及RemoveProductFromStock等核心方法。

B:我们有个叫Initialize()的方法用于从系统配置文件中加载已有的具体商店。

C:我们有所有可用Provider的引用。

D:我们有一个默认Provider的引用,此Provider已被包装。

 

一旦实例化,所有对这个API类的请求都会一个一个地转给默认的Provider

2.  Provider Base Class:这是一个内部抽象类,位于System.Configuration.Provider命名空间,用于定义一个ProviderInitialize()方法用于从配置文件中获取必要的信息来构建具体的Provider。我们在自己实现这个抽象类的时候要记的重写Initialize()方法。


3.  Application Provider Base:这是一个从ProviderBase类继承来的一个抽象类,同时也是API类的一个“镜像”,通过在API中所暴露的方法来为父类定义抽象方法并在父类中实现。

在我们的应用程序中我们把这个类叫做“StoreProvider”,请注意这个Store Provider是如何定义在Store类中已有的方法,同时从ProviderBase类继承。

 

4.  Concrete ProviderApplication Provider Base中所定义的方法在这个类中实现。Concrete Provider为了从配置文件中读取信息而会重写Initialize()方法

这四个类是实现Provider模式所必须的。其它的类则是用来定义一个Provider能提供什么东西(在本文中,是一个Product类)或是在以后为这些对象提供服务的工具类,或是用于管理程序配置文件。

 


这些东西看起来有点晕,不过当你看到一个请求传给Store类后再转交给一个StoreProvider的引用,由具体的CornerStoreProvider去完成时,你就知道这几个“齿轮”是如何配合的了。

 

0
0

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻