1.两个对象
Public Class User
Private _id As String
Public Property ID As String
Get
Return _id
End Get
Set(ByVal value As String)
_id = value
End Set
End Property
Private _name As String
Public Property Name As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
Public Class Department
Private _id As String
Public Property ID As String
Get
Return _id
End Get
Set(ByVal value As String)
_id = value
End Set
End Property
Private _name As String
Public Property Name As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
End Class
2.抽象工厂和具体工厂
'抽象工厂
Public Interface IFactory
Function CreateUser() As IUser
Function createDepartment() As IDepartment
End Interface
'具体工厂A
Public Class AccessFactory
Implements IFactory
Public Function createDepartment() As IDepartment Implements IFactory.createDepartment
Return New AccessDepartment
End Function
Public Function CreateUser() As IUser Implements IFactory.CreateUser
Return New AccessUser
End Function
End Class
'具体工厂B
Public Class SqlserverFactory
Implements IFactory
Public Function createDepartment() As IDepartment Implements IFactory.createDepartment
Return New SqlserverDepartment
End Function
Public Function CreateUser() As IUser Implements IFactory.CreateUser
Return New SqlserverUser
End Function
End Class
3.抽象产品和具体产品
'抽象产品A
Public Interface IUser
Sub Insert(ByVal user As User)
Function GetUser(ByVal id As Integer) As User
End Interface
'具体产品A1
Public Class AccessUser
Implements IUser
Public Function GetUser(ByVal id As Integer) As User Implements IUser.GetUser
Console.WriteLine("在Access中根据ID得到User表一条记录")
Return Nothing
End Function
Public Sub Insert(ByVal user As User) Implements IUser.Insert
Console.WriteLine("在Access中给User表增加一条记录")
End Sub
End Class
'具体产品A2
Public Class AccessDepartment
Implements IDepartment
Public Function GetDepartment(ByVal id As Integer) As Object Implements IDepartment.GetDepartment
Console.WriteLine("在Access中根据ID得到Department表一条记录")
Return Nothing
End Function
Public Sub Insert(ByVal depart As Department) Implements IDepartment.Insert
Console.WriteLine("在Access中给Department表增加一条记录")
End Sub
End Class
'抽象产品B
Public Interface IDepartment
Sub Insert(ByVal depart As Department)
Function GetDepartment(ByVal id As Integer)
End Interface
'具体产品B1
Public Class SqlserverUser
Implements IUser
Public Function GetUser(ByVal id As Integer) As User Implements IUser.GetUser
Console.WriteLine("在SQL Server中根据ID得到User表一条记录")
Return Nothing
End Function
Public Sub Insert(ByVal user As User) Implements IUser.Insert
Console.WriteLine("在SQL Server中给User表增加一条记录")
End Sub
End Class
'具体产品B2
Public Class SqlserverDepartment
Implements IDepartment
Public Function GetDepartment(ByVal id As Integer) As Object Implements IDepartment.GetDepartment
Console.WriteLine("在SQL Server中给Department表增加一条记录")
Return Nothing
End Function
Public Sub Insert(ByVal depart As Department) Implements IDepartment.Insert
Console.WriteLine("在SQL Server中根据ID得到Department表一条记录")
End Sub
End Class
3.客户端
Module Module1
Sub Main()
Console.WriteLine("Access-----------------")
AccessDispay()
Console.WriteLine()
Console.WriteLine("Sqlserver-------------------")
SqlserverDispay()
Console.Read()
End Sub
Private Sub AccessDispay()
Dim user As New User
Dim dept As New Department
Dim factory As IFactory = New AccessFactory
Dim myUser As IUser = factory.CreateUser
Dim myDepart As IDepartment = factory.createDepartment
myUser.Insert(user)
myUser.GetUser(1)
myDepart.Insert(dept)
myDepart.GetDepartment(1)
End Sub
Private Sub SqlserverDispay()
Dim user As New User
Dim dept As New Department
Dim factory As IFactory = New SqlserverFactory
Dim myUser As IUser = factory.CreateUser
Dim myDepart As IDepartment = factory.createDepartment
myUser.Insert(user)
myUser.GetUser(1)
myDepart.Insert(dept)
myDepart.GetDepartment(1)
End Sub
End Module