EPower2002示例:运用工厂方法设计类
发表于:2007-06-30来源:作者:点击数:
标签:
EPower2002示例:运用工厂方法设计类 1.新建一类库工程,命名为 VB NE TD esignMode. vb 2.将Class1.vb删除 3.在此工程中添加类,命名为FactoryMethod.vb 4.在FactoryMethod.vb中添加产品类Product. (1)添加三个私有成员变量:mID,mName,mCreaDate (2)添加三个公
EPower2002示例:运用"工厂方法"设计类
1.新建一类库工程,命名为"
VBNE
TDesignMode.
vb"
2.将Class1.vb删除
3.在此工程中添加类,命名为"FactoryMethod.vb"
4.在"FactoryMethod.vb"中添加产品类"Product".
(1)添加三个私有成员变量:mID,mName,mCreaDate
(2)添加三个公有属性:ID,Name,CreaDate
***********************************************
FactoryMethod.
vb代码如下:
***********************************************
Public Class Product @#产品
@#定义私有成员变量
Private mID As Integer
Private mName As String
Private mCreaDate As DateTime
@#定义属性
Public Property ID() As Integer
Get
Return mID
End Get
Set(ByVal Value As Integer)
mID = Value
End Set
End Property
Public Property Name() As String
Get
Return mName
End Get
Set(ByVal Value As String)
mName = Value
End Set
End Property
Public Property CreaDate() As DateTime
Get
Return mCreaDate
End Get
Set(ByVal Value As DateTime)
mCreaDate = Value
End Set
End Property
@#以下还可定义其它属性
@#以下还可定义更多方法
@#以下还可定义更多事件
End Class
5.再添加一类,命名为"Factory.vb"
6.在其类中,用Overridable关键字定义CreateProduct方法,方法将返回一个Product类的实例.
7.在CreateProduct函数体中初始化Product类.在这里,为演示方便,我们将此产品编号ID定为99999,产品名称Name定为"DreamFactoryNO.1",出产日期为date.now
**********************************
Factory.vb代码如下:
**********************************
Public Class Factory @#工厂
@#用Overridable关键字定义CreateProduct方法,该方法返回一个Product类的实例
@#由于它有Overridable关键字,其子类可用Overrides关键字覆盖。
Public Overridable Function CreateProduct() As Product
Dim NewProduct As New Product()
@#进行产品类的初始化工作
NewProduct.ID = 99999
NewProduct.Name = "DreamFactoryNO.1"
NewProduct.CreaDate = Date.Now
Return NewProduct
End Function
End Class
8.接下来,我们要在该
解决方案中添加一"window应用程序"项目,将该项目命名为"Test"
一般来说,最好将该
测试工程保存在该类的文件夹内.
9.将VS默认生成的form1.vb更名为"frmFactory.vb",最好也代码视图中的"public Class Form1()"改为"public Class frmFactory()"
代码如下:
Public Class frmFactory
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
注:其中代码已省略
#End Region
End Class
10.添加对"VBNETDesignMode"项目的引用,并导入VBNETDesignMode名称空间.
Imports VBNETDesignMode
11.添加一个名为"NewFactory"的新类,我们将让此类继承Factory类.继承是通过Inherits关键字实现的.
Inherits VBNETDesignMode.Factory
12.由于我们要对产品进行新的初始化操作,因此,我们将要覆盖CreateProduct方法.
前面我们说过,该方法之所以可以覆盖,是因为它是被Overridable关键字来声明的.
Public Class NewFactory
Inherits VBNETDesignMode.Factory
Public Overrides Function CreateProduct() As Product
Dim NewProduct As New Product()
@#进行产品类的初始化工作
NewProduct.ID = 88888
NewProduct.Name = "DreamFactoryNO.2"
NewProduct.CreaDate = Date.Now
Return NewProduct
End Function
End Class
13.最后,我们在窗体的Load中来分别测试:
Private Sub frmFactory_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim OldPro As New Product()
Dim OldFac As New Factory()
OldPro = OldFac.CreateProduct
De
bug.WriteLine("********旧产品信息**********")
Debug.WriteLine(" ID:" & OldPro.ID)
Debug.WriteLine(" Name:" & OldPro.Name)
Debug.WriteLine(" CreaDate:" & OldPro.CreaDate)
Dim NewPro As New Product()
Dim NewFac As New NewFactory()
NewPro = NewFac.CreateProduct
Debug.WriteLine("********新产品信息**********")
Debug.WriteLine(" ID:" & NewPro.ID)
Debug.WriteLine(" Name:" & NewPro.Name)
Debug.WriteLine(" CreaDate:" & NewPro.CreaDate)
End Sub
小结:
以上代码虽无什么实用价值,但是实现这些代码的设计思想却是很有实用价值的,当你真正理解"工厂方法"的设计模式后,你可以
开发出效率更高更专业的东西来的.
原文转自:http://www.ltesting.net