# coding=utf-8
# * 一般情况下,当一个基类写好之后,我们也许不愿意去改动,也不能改动,原因是
# * 这样的在项目中用得比较久的基类,一旦改动,也许会影响其他功能模块,但是,
# * 又要在该类上面添加功能。使用继承,当在A阶段,写出继承类,用过一段时间,发
# * 现又要添加新功能,于是又要从原始类或A阶段的类继承,周而复始,慢慢的,子类
# * 就越来越多,层级就越来越深。然而,事实上,在C阶段需要A阶段的功能,但不需要
# * B阶段的功能,在这种复杂情形下,继承就显得不灵活,于是想到了装饰模式。
#
# * 装饰模式:
# * 需要扩展一个类的功能,或给一个类增加附加责任
# * 需要动态地给一个对象增加功能,这些功能可以再动态地撤销。
# * 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变得不现实。
class DbManager:
def __init__(self):
pass
def operate_db(self):
pass
class DecoratePatterns(DbManager):
dbmanager = None
def __init__(self):
pass
def decorate(self, dbmanager):
self.dbmanager = dbmanager
def operate_db(self):
if self.dbmanager:
self.dbmanager.operate_db()
class DbInsert(DecoratePatterns):
def operate_db(self):
print '插入操作'
class DbDel(DecoratePatterns):
def operate_db(self):
print '删除操作'
class DbUpdate(DecoratePatterns):
def operate_db(self):
print '更新操作'
if __name__ == "__main__":
dm = DbManager()
db = DbInsert()
print db.operate_db()