组合模式股东会下面是董事会和监事,董事会下面是总经理,总经理下面是多个副总经理,副总经理下方对应不同的部门,代码描述这样的组合模式
时间: 2023-06-02 18:02:49 浏览: 84
组合模式代码
首先,我们可以定义一个抽象的股东会成员(ShareholderMeetingMember)类,它有一个名称属性和一个打印信息的方法。然后,我们定义两个具体的股东会成员类:董事会(BoardOfDirectors)和监事(SupervisoryBoard),它们都继承自股东会成员类。董事会类有一个成员变量存储总经理对象,监事类没有成员变量。
接下来,我们定义一个抽象的管理层(Management)类,它也有一个名称属性和一个打印信息的方法。然后,我们定义一个具体的总经理(GeneralManager)类,它继承自管理层类,并且有一个成员变量存储副总经理对象的列表。副总经理类(ViceGeneralManager)也继承自管理层类,它有一个成员变量存储部门对象。
最后,我们定义一个抽象的部门(Department)类,它也有一个名称属性和一个打印信息的方法。然后,我们可以定义具体的部门类,例如销售部门(SalesDepartment)、研发部门(ResearchDepartment)等,它们都继承自部门类。
代码示例:
```python
class ShareholderMeetingMember:
def __init__(self, name):
self.name = name
def print_info(self):
print(f"股东会成员:{self.name}")
class BoardOfDirectors(ShareholderMeetingMember):
def __init__(self, name, general_manager):
super().__init__(name)
self.general_manager = general_manager
def print_info(self):
super().print_info()
self.general_manager.print_info()
class SupervisoryBoard(ShareholderMeetingMember):
pass
class Management:
def __init__(self, name):
self.name = name
def print_info(self):
print(f"管理层:{self.name}")
class GeneralManager(Management):
def __init__(self, name, vice_general_managers):
super().__init__(name)
self.vice_general_managers = vice_general_managers
def print_info(self):
super().print_info()
for vice_general_manager in self.vice_general_managers:
vice_general_manager.print_info()
class ViceGeneralManager(Management):
def __init__(self, name, department):
super().__init__(name)
self.department = department
def print_info(self):
super().print_info()
self.department.print_info()
class Department:
def __init__(self, name):
self.name = name
def print_info(self):
print(f"部门:{self.name}")
class SalesDepartment(Department):
pass
class ResearchDepartment(Department):
pass
```
使用示例:
```python
# 创建部门对象
sales_department = SalesDepartment("销售部门")
research_department = ResearchDepartment("研发部门")
# 创建副总经理对象,并将不同的部门分配给不同的副总经理
vice_general_manager_1 = ViceGeneralManager("副总经理1", sales_department)
vice_general_manager_2 = ViceGeneralManager("副总经理2", research_department)
# 创建总经理对象,并将副总经理添加到列表中
general_manager = GeneralManager("总经理", [vice_general_manager_1, vice_general_manager_2])
# 创建董事会和监事对象
board_of_directors = BoardOfDirectors("董事会", general_manager)
supervisory_board = SupervisoryBoard("监事会")
# 打印股东会成员信息
board_of_directors.print_info() # 股东会成员:董事会,管理层:总经理,管理层:副总经理1,部门:销售部门,管理层:副总经理2,部门:研发部门
supervisory_board.print_info() # 股东会成员:监事会
```
阅读全文