组合

软件重用的重要方式除了继承之外还有另外一种方式,即:组合

组合指的是,在一个类中以另一个类的对象作为数据属性,称为类的组合。

 

组合与继承都是有效利用已有类的资源的重要方式。但是二者的概念和使用场景皆不同:

1.继承的方式

通过继承建立了派生类与基类之间的关系,他是一种“是”的关系,比如 白马是马,人是动物。

当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好,比如老师是人,学生是人

 

2.组合的方式

用组合的方式建立了类与组合的类之间的关系,他是一种“有”的关系,比如 教授有生日,教授授python和linux课程,教授有学生s1, s2, s3...

 

示例代码:

class Teacher:
    def __init__(self, name, sex, course):
        self.name = name
        self.sex = sex
        self.course = course


class Student:
    def __init__(self, name, sex, course):
        self.name = name
        self.sex = sex
        self.course = course


class Course:
    def __init__(self, name, price, period):
        self.name = name
        self.price = price
        self.period = period


python_obj = Course("python", "15800", "7m")
t1 = Teacher("egon", "male", python_obj)
s1 = Student("alex", "male", python_obj)

print(t1.course.name)
print(s1.course.name)

输出:

python
python

 

总结:

当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。

 

版权声明:
作者:admin
链接:https://www.chenxie.net/archives/1852.html
来源:蜀小陈
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>