聚合(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实例对象,所以不影响。