-转-设计模式-工厂模式-vbs
上一篇 / 下一篇 2009-12-20 22:50:00 / 个人分类:设计模式
- 工厂模式 ---- 一种创建模式,也就是说它可以用于创建和初始化某个对象,就像它的名字一样,我们可以把我们需要东西都放在这个工厂里,并可以根据我们的需要为此工厂抽象出一些方法,并提供相应的接口来调用,这样我们就可以自由的通过这些接口来拿工厂里的方法,这就是此设计模式的作用。接下来我们就来看一个最简单的额例子。
Function ObjectFactory(sObjectName)
n8S-}0F/Y$B0 Select Case sObjectName
%[6l-g5Gc7l0 Case "Search Edit" 51Testing软件测试网+d9W@U/\/~p7Bz(R^
Set ObjectFactory = Browser("micClass:=Browser")._
*|l qCYu+M0 Page("micClass:=Page").WebEdit("name:=wd") 51Testing软件测试网;L(k2?]*D:u{k+a
Case "Search Button"
3R"MM
xi%bxP0 Set ObjectFactory = Browser("micClass:=Browser")._ 51Testing软件测试网
dfp&smy"P J1^
Page("micClass:=Page").WebButton("name:=百度一下")
)]$AV.|d0 Case Else 51Testing软件测试网@r@aQ5MQ2B
Set ObjectFactory = Nothing 51Testing软件测试网_.C%p(p
p
End Select
|+EhKf0End Function 51Testing软件测试网0VGA8Z~I`}b
ObjectFactory("Search Edit").Set "zzxxbb112" 51Testing软件测试网8f/u7lS \
ObjectFactory("Search Button").click
以上代码是一个最简单的演示,此代码不一定有实际用途,主要是为了能让大家更好的理解工厂模式,我们可以看到使用以上的方法,我们可以很方便的管理我们需要的对象,并对其进行命令式的调用,并可以为这些对象创建一个公共接入点。51Testing软件测试网+r^ ^Zz
以上这个例子随便可以使用我们调用方便,并且易于实施和维护,但它缺有个致命的缺陷,那就是当使用工厂模式创建完对象之后,如果再次进行创建,它就会再实例化一个对象出来(特别是针对CREATEOBJECT命令的情况下),这样就会出现对象混乱的现象,解决方案就是使用单例模式凝聚对象实体,工厂模式来管理实时各个对象。来看下一个例子。
'Py5EU9w0^0Public oOutputs
:n_;k!D.f0Set oOutputs = New OutFactory51Testing软件测试网X1~{L,O/}E
Class OutFactory51Testing软件测试网%eH.U1j{)r \:^v
Public Channels '定义变量 51Testing软件测试网y})I ]'_ [
Private Sub Class_Initialize 51Testing软件测试网4C:\j0^,yS]Id
Set Me.Channels = CreateObject("Scripting.Dictionary")
Y*R(C@;h%SruK/]0 End Sub
0] ^KP?%LJ0 Private Sub Class_Terminate 51Testing软件测试网9u.W"e6sRJf? APE
Set Me.Channels = Nothing
~c
q{5H"@
O ANTj0 End Sub 51Testing软件测试网9_O`^KB"j
Public Sub Construct (sChannelName, sChannelType)
R@4H+C`,c0 Dim oNewChannel 51Testing软件测试网Z1H*Q,]8{cH{
Select Case sChannelType
aB+[+H?E|J e0 Case "excel" 51Testing软件测试网&[9wWjPg/[$F"V
k/G
'创建一个EXCEL的SINGLETON类 51Testing软件测试网6z0_ l
vXnh{x
Set oNewChannel = New ExcelWrapper 51Testing软件测试网W/M7eMNa3F
Case "fso" 51Testing软件测试网+^~GB$o6G
u3a9A+P3j
'创建一个FSO的SINGLETON类
{)Q!|&n