Python 类组合和聚合
Admin
2019-04-28 16:15:47
Python
聚合(aggregation):
是整体与部分的关系。
通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
#! /usr/bin/env python # -*- coding:utf8 -*- ''' 聚合关系 ''' class A(object): def __init__(self): self.num = 1 class B(object): def __init__(self, num): self.num = num # 有一个A类的实例对象 def __del__(self): print "not del" old_A = A() old_B = B(old_A) del old_B
组合(composition):
也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
#! /usr/bin/env python # -*- coding:utf8 -*- ''' 组合关系 ''' class A(object): def __init__(self): self.num = 2 class B(object): def __init__(self): self.num = A() # 包含A类的实例对象 def __del__(self): print "not del" old_B = B() del old_B
组合,B实例对象不存在了,内部组合的A实例也不存在。
聚合,B实例对象不存在了,从初始化方法传入的A实例不属B实例对象,所以不影响。