011Visual Basic 抽象工厂模式

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值