017 Visual Basic 组合模式之公司管理系统


1.公司类抽象类或接口

Public MustInherit Class Company
    Protected name As String
    Public Sub New(ByVal myName As String)
        Me.name = myName
    End Sub

    Public MustOverride Sub add(ByVal c As Company)
    Public MustOverride Sub Remove(ByVal c As Company)
    Public MustOverride Sub Display(ByVal depth As Integer)
    Public MustOverride Sub LineOfDuty()
End Class

2.具体公司类实现接口树枝节点

Public Class ConcreteCompany
    Inherits Company
    Private _children As New List(Of Company)
    Public Property children As List(Of Company)
        Get
            Return _children
        End Get
        Set(ByVal value As List(Of Company))
            _children = value
        End Set
    End Property
    Public Sub New(ByVal myName As String)
        MyBase.new(myName)
    End Sub

    Public Overrides Sub add(ByVal c As Company)
        children.Add(c)
    End Sub

    Public Overrides Sub Display(ByVal depth As Integer)
        Console.WriteLine(New String("-", depth) + name)
        For Each com In children
            com.Display(depth + 4)
        Next
    End Sub

    Public Overrides Sub LineOfDuty()
        For Each com In children
            com.LineOfDuty()
        Next
    End Sub

    Public Overrides Sub Remove(ByVal c As Company)
        children.Remove(c)
    End Sub
End Class

3.人力资源部与财务部类树叶节点

'人力
Public Class HRDepartment
    Inherits Company
    Public Sub New(ByVal myName As String)
        MyBase.New(myName)
    End Sub
    Public Overrides Sub add(ByVal c As Company)

    End Sub

    Public Overrides Sub Display(ByVal depth As Integer)
        Console.WriteLine(New String("-", depth) & name)
    End Sub

    Public Overrides Sub LineOfDuty()
        Console.WriteLine("{0}员工招聘培训管理", name)
    End Sub

    Public Overrides Sub Remove(ByVal c As Company)

    End Sub
End Class

'财务
Public Class FinanceDepartment
    Inherits Company
    Public Sub New(ByVal myName As String)
        MyBase.New(myName)
    End Sub
    Public Overrides Sub add(ByVal c As Company)

    End Sub

    Public Overrides Sub Display(ByVal depth As Integer)
        Console.WriteLine(New String("-", depth) & name)
    End Sub

    Public Overrides Sub LineOfDuty()
        Console.WriteLine("{0}公司财务收支管理", name)
    End Sub

    Public Overrides Sub Remove(ByVal c As Company)

    End Sub
End Class

4.客户端调用

 

Module Module1

    Sub Main()
        Dim root As New ConcreteCompany("北京总公司")
        root.add(New HRDepartment("总公司人力资源部"))
        root.add(New FinanceDepartment("总公司账务部"))

        Dim comp As New ConcreteCompany("上海华东分公司")
        comp.add(New HRDepartment("华东分公司人力资源部"))
        comp.add(New FinanceDepartment("华东分公司账务部"))
        root.add(comp)

        Dim comp1 As New ConcreteCompany("南京办事处")
        comp1.add(New HRDepartment("南京办事处人力资源部"))
        comp1.add(New FinanceDepartment("南京办事处账务部"))
        root.add(comp1)

        Dim comp2 As New ConcreteCompany("杭州办事处")
        comp2.add(New HRDepartment("杭州办事处人力资源部"))
        comp2.add(New FinanceDepartment("杭州办事处账务部"))
        root.add(comp2)

        Console.WriteLine("结构图")
        root.Display(1)

        Console.WriteLine("职责")
        root.LineOfDuty()

        Console.Read()

    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、付费专栏及课程。

余额充值