构建抽奖人员信息的类结构; 新建一个Person类作为父类,存储一些基本属性和通用属性; 新建一个Student类,作为Person的子类,重写父类的部分方法,用于获取Student对象独有信息; 新建一个Teacher类,作为Person的子类,重写父类的部分方法,用于获取Teacher对象独有信息; 通过多态和工厂模式来构建耦合度低的代码框架结构;
时间: 2023-11-27 11:50:31 浏览: 49
这是一个简单的抽奖人员信息的类结构,包括Person、Student和Teacher三个类:
```python
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def get_info(self):
return f"Name: {self.name}, Age: {self.age}, Gender: {self.gender}"
def get_type(self):
return "Person"
class Student(Person):
def __init__(self, name, age, gender, school):
super().__init__(name, age, gender)
self.school = school
def get_info(self):
return f"Name: {self.name}, Age: {self.age}, Gender: {self.gender}, School: {self.school}"
def get_type(self):
return "Student"
class Teacher(Person):
def __init__(self, name, age, gender, department):
super().__init__(name, age, gender)
self.department = department
def get_info(self):
return f"Name: {self.name}, Age: {self.age}, Gender: {self.gender}, Department: {self.department}"
def get_type(self):
return "Teacher"
```
其中,Person类是一个基类,包含了一些基本属性和通用属性,如姓名、年龄、性别等。Student和Teacher类是Person类的子类,分别重写了父类的get_info()和get_type()方法,用于获取学生和教师对象独有的信息。
为了实现耦合度低的代码框架结构,可以使用多态和工厂模式。具体来说,可以定义一个抽象的抽奖人员信息类LotteryPerson,它是一个抽象基类,包含了一些基本属性和通用属性,以及一个抽象方法get_type(),用于获取对象类型。然后,可以分别定义Student和Teacher类,它们都是LotteryPerson类的子类,实现了get_type()方法。接着,可以定义一个工厂类LotteryPersonFactory,它负责根据输入的参数创建相应的对象,并返回LotteryPerson类型的实例。这样,就可以通过工厂类创建对象,而不需要直接依赖具体的类,从而实现了代码的松耦合。
下面是使用多态和工厂模式实现的抽奖人员信息类结构:
```python
from abc import ABC, abstractmethod
class LotteryPerson(ABC):
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def get_info(self):
return f"Name: {self.name}, Age: {self.age}, Gender: {self.gender}"
@abstractmethod
def get_type(self):
pass
class Student(LotteryPerson):
def __init__(self, name, age, gender, school):
super().__init__(name, age, gender)
self.school = school
def get_info(self):
return f"Name: {self.name}, Age: {self.age}, Gender: {self.gender}, School: {self.school}"
def get_type(self):
return "Student"
class Teacher(LotteryPerson):
def __init__(self, name, age, gender, department):
super().__init__(name, age, gender)
self.department = department
def get_info(self):
return f"Name: {self.name}, Age: {self.age}, Gender: {self.gender}, Department: {self.department}"
def get_type(self):
return "Teacher"
class LotteryPersonFactory:
@staticmethod
def create_person(name, age, gender, person_type, extra_info=None):
if person_type == "Student":
return Student(name, age, gender, extra_info)
elif person_type == "Teacher":
return Teacher(name, age, gender, extra_info)
else:
raise ValueError("Invalid person type")
```
在这个类结构中,LotteryPerson类是一个抽象基类,定义了抽象方法get_type(),用于获取对象类型。Student和Teacher类都是LotteryPerson类的子类,实现了get_type()方法。LotteryPersonFactory类负责根据输入的参数创建相应的对象,并返回LotteryPerson类型的实例。可以看到,在LotteryPersonFactory类中,我们没有直接依赖具体的类,而是通过抽象基类LotteryPerson来创建对象,从而实现了代码的松耦合。
阅读全文