本文主要讲解一种强大的设计模式,在阅读本文之前请先确保你已经理解了一下几篇文章:
<!--
google_ad_client = "pub-9907354422678176";
/* 728x90, 创建于 09-12-1 */
google_ad_slot = "0609866937";
google_ad_width = 728;
google_ad_height = 90;
//-->
【软件测试自动化-VBScript基础讲座 3】== 类的组成 ==
http://blog.csdn.net/zzxxbb112/archive/2009/11/13/4805618.aspx
【软件测试自动化-VBScript基础讲座 4】== Dictionary 对象 ==
http://blog.csdn.net/zzxxbb112/archive/2009/11/18/4830732.aspx
【软件测试自动化-VBScript基础讲座 6】== 单例模式 ==
http://blog.csdn.net/zzxxbb112/archive/2009/11/26/4879692.aspx
- 工厂模式 ---- 一种创建模式,也就是说它可以用于创建和初始化某个对象,就像它的名字一样,我们可以把我们需要东西都放在这个工厂里,并可以根据我们的需要为此工厂抽象出一些方法,并提供相应的接口来调用,这样我们就可以自由的通过这些接口来拿工厂里的方法,这就是此设计模式的作用。接下来我们就来看一个最简单的额例子。
Function ObjectFactory(sObjectName)
Select Case sObjectName
Case "Search Edit"
Set ObjectFactory = Browser("micClass:=Browser")._
Page("micClass:=Page").WebEdit("name:=wd")
Case "Search Button"
Set ObjectFactory = Browser("micClass:=Browser")._
Page("micClass:=Page").WebButton("name:=百度一下")
Case Else
Set ObjectFactory = Nothing
End Select
End Function
ObjectFactory("Search Edit").Set "zzxxbb112"
ObjectFactory("Search Button").click
以上代码是一个最简单的演示,此代码不一定有实际用途,主要是为了能让大家更好的理解工厂模式,我们可以看到使用以上的方法,我们可以很方便的管理我们需要的对象,并对其进行命令式的调用,并可以为这些对象创建一个公共接入点。
以上这个例子随便可以使用我们调用方便,并且易于实施和维护,但它缺有个致命的缺陷,那就是当使用工厂模式创建完对象之后,如果再次进行创建,它就会再实例化一个对象出来(特别是针对CREATEOBJECT命令的情况下),这样就会出现对象混乱的现象,解决方案就是使用单例模式凝聚对象实体,工厂模式来管理实时各个对象。来看下一个例子。
Public oOutputs
Set oOutputs = New OutFactory
Class OutFactory
Public Channels '定义变量
Private Sub Class_Initialize
Set Me.Channels = CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate
Set Me.Channels = Nothing
End Sub
Public Sub Construct (sChannelName, sChannelType)
Dim oNewChannel
Select Case sChannelType
Case "excel"
'创建一个EXCEL的SINGLETON类
Set oNewChannel = New ExcelWrapper
Case "fso"
'创建一个FSO的SINGLETON类
Set oNewChannel = New fsoWrapper
Case "DB"
'创建一个ADO的SINGLETON类
Set oNewChannel = New DBWrapper
End Select
'把类都存储起来
Me.Channels.Add sChannelName, oNewChannel
End Sub
End Class
'***********构造方法**********
oOutputs.Construct "excel_instance","excel"
oOutputs.Construct "fso_instance","fso"
oOutputs.Construct "DB_instance","DB"
'***********直接拿我们需要的东西,并进行操作************
oOutputs.Channels("excel_instance").whatever
'此处的WHATEVER是EXCEL的SINGLETON类中的自定义方法,这里就用WHATEVER代替
通过上面的封装我们可以得到一个单体独立凝聚且易于实施和管理维护的工厂类。通过工厂的核心来创建、储存、管理我们需要的输出机制,并通过关键字请求进行对象输出,是一种在测试设计中非常重要的设计模式。
分享到:
相关推荐
ASP教程---vbscript1.pptASP教程---vbscript1.ppt
ppsdown绿色软件下载站 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <%charset="gb2312"%> <!--#include file="inc/config.asp"--> <!--#include file="inc/Function.asp" --> <%myclass="default"%> <!--#include ...
计算机软件-编程源码-VBScript 揭秘.zip
01-VBScript脚本语言基础(一)语法基础(L)
本节课程从自动化测试概述、UFT(QTP)脚本增强、VBscript脚本编程及Python等,扣丁学堂软件测试技术交流群:338750406 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
计算机软件-编程源码-Vbscript与Activex技术.zip
计算机软件-编程源码-VBScript与JScript实例教程.zip
' ADO constants include file for VBScript ' '-------------------------------------------------------------------- '---- CursorTypeEnum Values ---- Const adOpenForwardOnly = 0 Const adOpenKeyset = 1 ...
VBS是学习使用QTP必须要掌握的基础知识,要做QTP自动化测试高手,建议先学习点VBS基础
第3章--VBScript编程基础ppt课件(全).ppt
首先介绍一下AutoIt: AutoItv3是用以编写并生成具有BASIC语言风格的脚本程序的免费软件,它被设计用来在WindowsGUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化...
自动化测试脚本vbscript学习,软件测试自动化书籍
iquicktest自动化测试工作室 iquicktest.com AUTOnomyV是一款基于VBScript脚本语言的Web自动化测试工具,支持录制回放以及一些简单的验证。
商业编程-源码-VBScript JScript解释器源代码.zip
《ASP网络程序设计与应用》第4章ASP脚本语言--VBScript.ppt
VBScript基础教程VBScript基础教程VBScript基础教程VBScript基础教程
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <link href="style.css" type="text/css" rel="stylesheet"> <!--#include file="conn.asp"--> sql="select * from admin" set rs=server.CreateObject("adodb.recordset...
VBScript基础,VBScript基础,VBScript基础
第章ASP脚本语言-VBScript2022优秀文档.ppt
Language: VBscript <!--#include file="Inc/conn.inc"--> <!--#include file="Inc/checkUserName.inc"--> <!--#include file="Inc/saveNRegUser.inc"--> userName = request("userName") userPass = request(...